我正在使用Oracle 11g数据库。在主键上应用的数据库和索引器中创建的许多表。之后我使用Entity Framework 5.0连接数据库。 问题是,当我保存表中的任何记录时,它不会发送主键,这是自动递增的值。
public HttpResponseMessage PostCategory(TBLCATEGORY tblcategory)
{
if (ModelState.IsValid)
{
db.TBLCATEGORies.Add(tblcategory);
db.SaveChanges();
int32 ID=tblcategory.ID;
return ID;
}
}
它返回ID = 0; 还有一件事,在oracle中创建任何列Integer时,它在Entity Framework中显示十进制。
答案 0 :(得分:1)
我假设你已经在Oracle数据库中定义了一个序列和一个触发器来自动增加ID列,所以只有EF模型中的对象没有更新,但数据库中的实际条目具有正确递增的ID值,对吧?
然后问题是edmx模型不知道该列实际上是在数据库中生成值的ID列。您必须手动编辑edmx模型。 SSDL部分中的相应列条目必须将StoreGeneratedPattern属性设置为“Identity”。这告诉模型在插入后再次检查数据库以查找生成的ID值。但是,每次从数据库更新模型时,手动更改都将丢失。
我写了一篇关于它的简短博文:http://blog.aitgmbh.de/2014/06/02/patch-for-entity-framework-models-based-on-oracle-databases/
我已经创建了一个NuGet包,可以在您构建项目时为您完成所有工作:http://bit.ly/1hbxIsO
这样,即使更新了edmx模型,Identity属性也会再次添加到指定的ID列。
答案 1 :(得分:0)