Entity Framework 4.0插入新对象错误

时间:2011-01-22 20:04:54

标签: .net entity-framework c#-4.0 entity-framework-4

我在Visual Studio 2010中有一个使用Entity Framework 4.0的项目。我有以下代码:

using (var db = new MyEntities())
{
    var dbLead = db.Leads.CreateObject();
    dbLead.Email = lead.Email;
    db.Leads.AddObject(dbLead);
    db.SaveChanges();
}

其中MyEntities是通常的EF对象上下文。 Lead是EF生成的类,它映射到数据库中的相应表。除了上面代码中指定的Email属性之外,Lead类还有Id属性,我没有在此明确设置。所有预期的东西,没什么奇怪的。

我在调用db.SaveChanges()时遇到异常,引用“重复主键”作为问题。但是,在DB中,我将相应的列标记为主键,而在.edmx设计器中,相应的属性标记为EntityKey为true,StoreGeneratedPattern标记为Identity。

夫妻问题:

  1. 为什么设计师在生成类时默认情况下将StoreGeneratedPattern默认设置为Identity,假设基础表的相应列设置为主键?在我的情况下,我必须进入设计器中的每个类,并为每个主键属性自己设置此值(尽管有趣的是,默认情况下,EntityKey设置为true,如预期的那样)。

  2. 它还没有用......为什么?我已经尝试将StoreGeneratedPattern设置为Computed,但没有运气(预计,否则我会想知道为什么将它设置为Computed修复了问题)。

1 个答案:

答案 0 :(得分:3)

尝试为数据库中的IsIdentity列设置YesId。我认为这是问题,因为你提到EF本身没有将StoreGeneratedPattern设置为Identity