至少我现在已经把头发拉了几个小时。
所以我使用nhibernate将我的数据库映射到我的代码。在DB中,我有一个名为“Product”的表,它有一个名为“ProductId”的列,它是主键,在sql server 2012中也标记为标识列。
我的类'与Id列的映射定义为:
Id(x => x.ProductId, mapper => mapper.UnsavedValue(0))
;
然而,在创建一个新的Product对象并尝试保存它之后,我得到以下错误和内部异常:
{“无法执行批处理命令。[SQL:SQL不可用]”}
无法在表'Products'中为identity列插入显式值 当IDENTITY_INSERT设置为OFF时。
异常非常清楚,产品Id设置为0.如何在数据库中创建新对象时告诉nHibernate不提供Id列?
任何帮助非常感谢
感谢
答案 0 :(得分:1)
用于“ID”的生成器必须是 native (或 identity ),即由DB引擎驱动。映射应该是这样的:
Id(x => x.ProductId
, mapper =>
{
mapper.UnsavedValue(0)
mapper.Generator(Generators.Native)
..
});
见