使用 nHibernate 将新对象插入到 SQL Server 会给出有关标识插入未关闭的错误


至少现在我已经为此拔

头发几个小时了。

所以我使用 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"中插入标识列的显式值

相关内容

最新更新