我使用Oracle EF 5.0提供程序。 Oracle 11G數據庫。 這是我的數據庫模式:
context.SaveChanges()與oracle實體框架中的無效操作異常5
表中有一個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可能處於不一致的狀態。內部異常消息:由於對象的鍵值與ObjectStateManager
中的另一個對象衝突,因此AcceptChanges無法繼續。在調用AcceptChanges之前確保鍵值是唯一的。
但更改正確保存在數據庫中。而且我的Title對象有正確的標題Id和Title_Name
。我能做什麼?或者我做錯了什麼?
Opps。我從edmx中刪除繼承,錯誤消失!...
但是所有的項目都是建立在繼承!
Ops。具有相同方案的MS SQL也給出了這個例外。