【发布时间】:2014-09-22 09:15:57
【问题描述】:
我使用 Oracle EF 5.0 提供程序。 Oracle 11G 数据库。
这是我的数据库架构:
表有一个 Id 作为主键。对于数据库中的每个表都有触发器,它在插入新记录时触发,EF 在从序列插入后获取主键。为每个表创建序列。
在我的 edmx 文件中,每个 ID 列都有一个 StoreGeneratedPattern="Identity" 属性集。
我的代码是:
using (var context = new Entities())
{
var title = new TITLE
{
TITLE_NUMBER = 4000001,
IS_DRAFT = "N",
REGISTRY_DATE = DateTime.Now
};
var titleName = new TITLE_NAME
{
NAME = "title name"
};
title.TITLE_NAME.Add(titleName);
context.Set<TITLE>().Add(title);
context.SaveChanges();
}
context.SaveChanges()执行时抛出异常:
对数据库的更改已成功提交,但在更新对象上下文时出错。 ObjectContext 可能处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
但更改已正确保存在数据库中。我的 Title 对象具有正确的 Title 和 Title_Name 的 ID。我能做些什么?还是我做错了什么?
哎呀。我从 edmx 中删除了继承,错误消失了!....
但是所有项目都是在继承中构建的!!!
操作。具有相同方案的 MS SQL 也会出现此异常。
【问题讨论】:
标签: c# entity-framework oracle11g ef-database-first