是否可以使用 guid.comb 策略通过使用 Nhibernate 的 Mysql Db 进行身份生成?
当我使用它时
mapping.Id(x => x.Id)
.Column("row_guid")
.CustomType(typeof(string))
.GeneratedBy.GuidComb()
.Length(36);
我最终得到了
----> System.InvalidOperationException : Identity type must be Guid
在MySql场景下有没有办法克服这个障碍?
编辑:
我在 guid 和 int 之间没有选择。这是来自 MSSql 的旧数据库的端口
最佳答案
这是常见问题,尤其是在将 MSSql 应用程序移植到 MySql 时。
正如 David 所说,实现一个简单的 CustomIdGenerator,它是 GuidCombGenerator 的包装器。这为您提供了字符串形式的 Guid。
using NHibernate.Engine;
using NHibernate.Id;
namespace NHibernateMaps
{
public class GuidStringGenerator : IIdentifierGenerator
{
public object Generate(ISessionImplementor session, object obj)
{
return new GuidCombGenerator().Generate(session, obj).ToString();
}
}
}
并在映射中将其指定为
mapping.Id(x => x.Id)
.Column("row_id")
.CustomType(typeof(string))
.GeneratedBy.Custom(typeof(GuidStringGenerator))
.Length(36);
关于mysql - 如何在 MySql 数据库中使用 guid.comb 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995579/