我正在使用MVC4與實體框架4.1。樂觀併發異常由用戶代碼處理
最初我們從數據庫創建了一個Ado.net實體模型。在.edmx文件中,數據庫中的某些表不可見,因爲它們不具有特定表上的主鍵。
隨着我們的項目向前發展,我們需要更新到沒有主鍵字段的日誌表格之一。
因此,我們修改了.edmx文件,而不是在數據庫中進行修改。我們的客戶要求我們不要修改數據庫字段。我們修改了.edmx並在表中的一個現有字段上創建了一個pk(例如tbl_log
表)。
我們正在嘗試更新tbl_log。但它給出了一個錯誤信息:Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
我已經看到了堆棧溢出中的很多問題,並且搜索了一下,但找不到任何解決方案。
即使我試過刷新ObjectStateManager條目,但它仍然指向相同的錯誤。
這裏是我的代碼
tbl_log log = new tbl_log();
Entity.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);
log.LoginId = strLoginId;
log.Password = strPassword;
log.IPAddress = strIpAddress;
log.Date_Time = DateTime.Parse(DateTime.Now.ToString());
log.sessionId = new Guid(strSessionId);
Entity.AddTotbl_log(log);
Entity.SaveChanges();// optimistic concurrency error
請幫
感謝,
KARTHIK
我已經爲數據庫中已存在的列添加了PK。但是在數據庫中沒有爲該列定義PK。 –
PK用於跟蹤對象,所以如果您已經在模型中將PK設置爲具有Identity的'StoreGenerationPattern',則會期望值被更改。當它不改變時,它會拋出你所看到的錯誤。嘗試將其更改爲「無」,因爲EF不會期望您的人造PK發生變化。 –
+1謝謝Ryan Amies,在模型 –