c# - IDENTITY INSERT 和 LINQ to SQL

标签 c# .net linq-to-sql identity-insert

我有一个 SQL Server 数据库。该数据库有一个名为 Item 的表。项目有一个名为“ID”的属性。 ID 是我表上的主键。这个主键是一个增量值为 1 的整数。当我尝试插入记录时,我收到一条错误消息:

Cannot insert explicit value for identity column in table 'Item' when IDENTITY_INSERT is set to OFF.".

我正在尝试使用以下代码插入记录:

  public int AddItem(Item i)
  {
    try
    {
      int id = 0;
      using (DatabaseContext context = new DatabaseContext())
      {
        i.CreatedOn = DateTime.UtcNow;
        context.Items.InsertOnSubmit(i);
        context.SubmitChanges();
        id = i.ID;
      }
      return id;
    }
    catch (Exception e)
    {
      LogException(e);
    }
  }

当我在提交之前查看 i.ID 时,我注意到 i.ID 设置为 0。这意味着我正在尝试插入 0 作为标识。但是,我不确定它应该是什么。有人可以帮帮我吗?

谢谢!

最佳答案

这听起来很简单,好像您的模型没有意识到它一个身份; ID 列应标记为数据库生成(UI 中的 Auto Generated Value,或 xml 中的 IsDbGenerated),并且可能作为首要的关键。然后它不会尝试插入它,并在写入后正确更新值。

关于c# - IDENTITY INSERT 和 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139163/

相关文章:

c# - MonoTouch 的 QR 库?

c# - 如何使用 .Net 让窗口保持在顶部?

.net - 如何从 Linq 2 SQL 迁移到 Linq 2 实体?

c# - Linq to Sql 多对多关系

c# - 通过更新父对象删除 Linq to SQL 中的相关对象

c# - 将折线转换为具有宽度的多边形形状

c# - 任务和 lambda 表达式语法

c# - 如何检查是否设置了 LogWriter?

c# - LINQ 和唯一 ID

javascript - 用户控件内的 RegisterStartupScript