当我定义NHibernate实体/映射以使用Guid作为标识列时,我收到一个异常。Guid列生成为varchar(40),但内容似乎是二进制的。
对此有解决方案吗?现在我只使用简单的ol‘int,但如果能在以后的项目中知道就更好了!:)
发布于 2009-06-30 12:31:59
MySql连接器文档指出,从.NET连接器5.2版开始,它们将GUID视为二进制(16),而不是VARCHAR(40)。
由于nhibernate中的当前MySQL方言没有更新以反映此更改(实际上已准备好),因此在nhibernate生成模式后,您需要手动将这些字段转换为二进制(16)。
发布于 2010-01-26 19:19:55
另一个更新是最新的连接器使用Char(36)
此选项在Connector/NET 6.1.1中引入。GUID类型的后端表示已从BINARY(16)更改为CHAR(36)。这样做是为了允许开发人员使用服务器函数UUID()来填充GUID表- UUID()生成一个36个字符的字符串。旧应用程序的开发人员可以将“旧Guids=true”添加到连接字符串,以便使用数据类型为BINARY(16)的GUID。
https://stackoverflow.com/questions/1034879
复制相似问题