由于身份字段,LINQ to Entity 在插入记录时出错

LINQ to Entity Error on Inserting Records Because of Identity Field

基本上,我正在尝试使用 LINQ to Entity 向我的 table 插入一条记录。

        using (MyEntities container = new MyEntities())
        {
             container.MyTable.AddObject(record);
             container.SaveChanges();
        }

现在我的问题是:我要插入的 table 有一个列 ID,它是 PK 并且是一个标识字段。在我的模型中,我确保将列的 StoreGeneratedPattern 属性 设置为 IDENTITY。但是,当我执行 运行 我的代码时,它仍然给我错误消息:

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

我的模型是否缺少任何其他需要更新的属性?

谢谢!

错误似乎是因为您明确地为您的对象提供了一个 ID,并且将 StoreGeneratedPattern 设置为 IDENTITY,这会自动生成 ID 字段(这是主键)。
您是否检查过是否为名为 record 的对象的 ID 字段分配了值?如果是这样,请尝试删除 ID 字段的分配,它将由模型在插入时分配。

EDIT :也许那是因为数据库知道这个字段应该自动递增,但 EF 不知道。
打开 edmx 文件并在存储模式定义语言 (SSDL) 区域中添加属性 StoreGeneratedPattern="Identity"。您的实体类型定义将大致如下所示:

<EntityType Name="INVOICE">
          <Key>
            <PropertyRef Name="CODE" />
          </Key>
          <Property Name="CODE" Type="varchar" Nullable="false"
              MaxLength="10" StoreGeneratedPattern="Identity"/>         
 </EntityType>

这应该可行,但如果您更新模型,这些更改将会丢失,您将不得不重新进行。