使用nHibernate将新对象插入SQL Server会出现关于身份插入未被关闭的错误

时间:2014-01-04 18:49:39

标签: nhibernate insert

至少我现在已经把头发拉了几个小时。

所以我使用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列?

任何帮助非常感谢

感谢

1 个答案:

答案 0 :(得分:1)

用于“ID”的生成器必须是 native (或 identity ),即由DB引擎驱动。映射应该是这样的:

Id(x => x.ProductId
  , mapper =>
  {
    mapper.UnsavedValue(0)
    mapper.Generator(Generators.Native)
    ..
  });

相关问题