【发布时间】:2011-09-12 11:59:57
【问题描述】:
我正在使用 EF4。我想在数据库中插入一个新的 MyObject。 MyObject 有两个字段:
Id:int(身份)和 名称:字符串
正如我在文档中看到的,实体框架应该将 MyObject.Id 设置为调用 SaveChanges() 后数据库生成的值,但在我的情况下,这不会发生。
using (var context = new MyEntities())
{
var myObject = MyObjects.CreateMyObject(0, "something"); // The first parameter is identity "Id"
context.MyObjects.AddObject(myObject);
context.SaveChanges();
return myObject.Id; // The returned value is 0
}
更新:
这发生在我的一个实体中,其他实体工作正常。顺便说一句,我检查了 DB 列是身份,StoreGeneratedPattern 设置为身份。 这是SSDL。我看不出有什么不同。第一个工作不正常:
<EntityType Name="OrgUnit">
<Key>
<PropertyRef Name="Srl" />
</Key>
<Property Name="Srl" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="TypeId" Type="smallint" Nullable="false" />
<Property Name="Name" Type="varchar" Nullable="false" MaxLength="80" />
</EntityType>
<EntityType Name="OrgType">
<Key>
<PropertyRef Name="Srl" />
</Key>
<Property Name="Srl" Type="smallint" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="Title" Type="varchar" Nullable="false" MaxLength="120" />
<Property Name="Options" Type="int" Nullable="false" />
</EntityType>
在数据库中成功完成更新并生成身份,但实体对象没有更新为新身份。
【问题讨论】:
-
在这种情况下,您的 EF 模型可能不是最新的 - EF 应该自动从数据库中获取您的新 ID。尝试刷新您的 EF 模型
标签: entity-framework identity-column