我有一个主列作为ID的表。但该列不是标识列。所有值都是明确提供的。
下面是我的映射类
public ObjectTypeMap()
{
Table("OBJECTTYPE");
Id(x => x.ObjectTypeId);
Map(x => x.Title).Not.Nullable();
Map(x => x.Description);
}
但是当我尝试使用session.save保存此对象时,我收到错误消息
“无法将值NULL插入列'ObjectTypeId',表'DiscoveryWEBTest.dbo.ObjectType';列不允许空值.INSERT失败。\ r \ n语句已终止。”
但在我的对象中,我提供了ObjectTypeId的值。
问题是Fluent NHibernate将ID映射视为自动增量列,但在数据库中ObjectTypeId不是一个标识列,这就是为什么insert语句没有获取任何值并抛出null错误。
有没有一种方法我可以告诉该列是一个ID列,但它的值不会自动递增?
提前致谢
答案 0 :(得分:7)
像这样映射:
Id(x => x.ObjectTypeId).GeneratedBy.Assigned();