头发几个小时了。
所以我使用 nhibernate 将我的数据库映射到我的代码。在数据库中,我有一个名为"产品"的表,该表有一个名为"ProductId"的列,它是主键,并且在sql server 2012中也标记为标识列。
我的类与 Id 列的映射定义为:
Id(x => x.ProductId, mapper => mapper.UnsavedValue(0))
;
但是,在创建一个新的 Product 对象并尝试保存它后,我收到以下错误和内部异常:
{"无法执行批处理命令。SQL: SQL 不可用]"}
无法在表"产品"中插入标识列的显式值 当IDENTITY_INSERT设置为 OFF 时。
异常非常明显,产品 ID 设置为 0。如何告诉 nHibernate 在数据库中创建新对象时不提供 Id 列?
任何帮助非常感谢
谢谢
用于"ID"的生成器必须是本机(或身份),即由数据库引擎驱动。映射应如下所示:
Id(x => x.ProductId
, mapper =>
{
mapper.UnsavedValue(0)
mapper.Generator(Generators.Native)
..
});
看
- 映射 - Id, NaturalId
- 5.1.4.1. 生成器
- 通过代码使用 NHibernate 映射:当IDENTITY_INSERT设置为 OFF 时,无法在表"DietUser"中插入标识列的显式值