是否可以使用从 FNH 映射自动递增来创建十进制作为主键?
user1858996
问问题
1470 次
2 回答
2
我遇到了同样的事情。似乎fluent-nhibernate
正在强制执行此约束。
如果您知道数据库将允许这样做(在这种情况下,应该没问题),您可以像这样绕过约束:
Id(x => x.MyDecimalId).GeneratedBy.Custom<IdentityGenerator>();
这将使用相同的策略Identity()
,但不会引发异常。就我而言,我已经添加了一个扩展方法IdentityGenerationStrategyBuilder<IdentityPart>
:
public static class IdentityPartExtensions
{
public static void NumericIdentity(this IdentityGenerationStrategyBuilder<IdentityPart> identityBuilder)
{
identityBuilder.Custom<IdentityGenerator>();
}
}
那么你可以这样做:
Id(x => x.MyDecimalId).GeneratedBy.NumericIdentity();
于 2014-07-07T03:12:44.393 回答
0
要实现自增身份类型必须是整型int、long、uint、ulong。
前任 :
公共类用户 { 公共虚拟 int Id { 获取;放; } 公共虚拟 IList 名称 { 获取;放; } }
Id(x => x.ID).Column("ID").GeneratedBy.Increment();
对于十进制属性: Id(x => x.ID).Column("ID").GeneratedBy.Assigned();
在创建新对象时分配值。值应该是数据库中最后生成的键的增量。
或者你可以为 NHibernate 实现一个自定义 ID 生成器。 http://lucisferre.net/2009/07/14/implementing-a-custom-id-generator-for-nhibernate/
于 2012-11-30T05:15:33.260 回答