实体框架6不能插入记录

时间:2016-06-28 18:26:28

标签: c# entity-framework ef-database-first

如果我定义一个序列和这样的表:

testTab d = new testTab();
d.name1 = "sss";

using (var db = new ABEntities2())
{
    db.testTabs.Add(d);
    db.SaveChanges();
}

然后尝试使用EF 6插入数据:

StoreGeneratedPattern

我为Identity列设置了idenSaveChanges,它没有表现出来,DbUpdateConcurrencyException抛出的异常是<EntitySetMapping Name="testTabs"> <EntityTypeMapping TypeName="ABModel.testTab"> <MappingFragment StoreEntitySet="testTab"> <ScalarProperty Name="iden" ColumnName="iden" /> <ScalarProperty Name="name1" ColumnName="name1" /> <ScalarProperty Name="name2" ColumnName="name2" /> </MappingFragment> </EntityTypeMapping> </EntitySetMapping>

存储更新,插入或删除语句影响了意外的行数(0)。自实体加载后,实体可能已被修改或删除。刷新ObjectStateManager条目。

我做错了什么?

生成的testTabs:

var item = $("ul").closest("li");
var item2 = item.closest(".active");
item2.toggleClass("active");

if (item2.next("li") != null) {
  item2.next("li").toggleClass("active");
} else {
  item.toggleClass("active");
}

2 个答案:

答案 0 :(得分:0)

我会检查这些事情

  1. 确保[Key]班级testTabs正在设置

  2. 确保您同时没有ABEntities2 (DbContext)的两个不同实例

答案 1 :(得分:0)

看起来唯一的问题是使用sequence,因为我将表格定义更改为

CREATE TABLE [dbo].[testTab]
(
    [iden] [bigint] identity(1,1) NOT NULL ,
    [name1] [nchar](10) NULL,
    [name2] [nchar](10) NULL,
    PRIMARY KEY CLUSTERED 
    (
    [iden] ASC
    )
) ON [PRIMARY]
  • 所以我使用identity代替sequence并重新创建模型,一切正常。在sql2012中引入的sequence似乎无法正确使用EF6。