我们有一个大型系统,它通过 Unity 松散地绑定到它的数据源(Navision)——我们有机会将它换掉并拥有我们自己的数据库。
因此,我们环顾四周,非常喜欢 Fluent NHibernate 的外观——我们正在尝试进行概念验证并更换一些服务。
我们想使用 NHibernates HiLo 算法 - 不幸的是,我们从 Navision 继承了字符串 ID,它作为其 ID 的前缀(例如 COL00001),因此为了匹配我们需要使用字符串 ID 的接口。
有谁知道我怎么会得到类似...
Id(x => x.ID).GeneratedBy.HiLo("100");
在 ID 是字符串的地方工作?我们目前正在获取 Identity must be int, long 等
谢谢,
安迪
- - - 更新 - - -
我尝试了建议的文章中的示例,但此功能已从 Fluent NHibernate 的更高版本中删除 - 但是有一个 .Custom - 但我似乎无法让它工作!
public class ManufacturerMap : ClassMap<Manufacturer>
{
public ManufacturerMap()
{
Id(x => x.ID).GeneratedBy.Custom(typeof(StringTableHiLoGenerator));
Map(x => x.Name);
}
}
public class StringTableHiLoGenerator : TableHiLoGenerator
{
public override object Generate(ISessionImplementor session, object obj)
{
return base.Generate(session, obj).ToString();
}
}