【发布时间】:2011-01-22 20:04:54
【问题描述】:
我有一个在 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() 时遇到了一个异常,原因是“主键重复”是问题所在。但是,在数据库中,我将相应的列标记为主键,在 .edmx 设计器中,相应的属性标记为 EntityKey 为 true,StoreGeneratedPattern 标记为 Identity。
几个问题:
假设基础表的相应列设置为主键,为什么设计器不够聪明,在生成类时默认将 StoreGeneratedPattern 设置为 Identity?在我的例子中,我必须进入设计器中的每个类,并自己为每个主键属性设置这个值(不过,有趣的是,EntityKey 默认设置为 true,正如预期的那样)。
仍然无法正常工作...为什么?我尝试将 StoreGeneratedPattern 设置为 Computed,但没有运气(预期,否则我想知道为什么将其设置为 Computed 可以解决问题)。
【问题讨论】:
-
你使用默认的代码生成模板?
标签: .net entity-framework c#-4.0 entity-framework-4