我有一个项目在Visual Studio 2010中使用实体框架4.0我有以下代码:实体框架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标识为标识。
夫妇的问题:
为什么不是设计师很聪明,有StoreGeneratedPattern设置为当它生成的类的默认身份,假设基础表有相应的列设置为一个主键?在我的情况下,我不得不进入设计器的每个类,并为每个主键属性自己设置此值(不过,有趣的是,EntityKey默认设置为true,如预期的那样)。
它仍然不工作...为什么?我已经尝试将StoreGeneratedPattern设置为Computed,但没有运气(预计,否则我会想知道为什么将它设置为Computed修复了问题)。
什么是您的DBMS? – 2011-01-22 20:07:43
您使用默认代码生成模板? – 2011-01-22 20:11:53