2013-05-28 72 views
0

我使用EF 4.0,我在我的數據庫中有一個帶有時間戳字段的表,因爲我想控制此表中的併發性。時間戳和併發問題

然後,我創建了我的edmx,並使用模板DBContext生成了POCO類。

我做的第一個嘗試是在edmx中的timestamp字段中,我將存儲的生成模式設置爲none。然後在我的代碼我做:

myContext.MyTable.Attach(myEntity); 
myContext.Entry<MyTable>(myEntity).Property(p => p.AnyFieldNoTimestamp).IsModified = true; 
myContext.SaveChanges(); 

這給我一個例外,說不能更新時間戳列。

如果我有我只標記了一個字段進行修改,並且這個字段不是時間戳,爲什麼我得到這個錯誤?

然後我嘗試將edmx中的Propery存儲生成模式設置爲Indentity。

真的我有一個事務和兩個saveChanges。在第二次嘗試中,第一個savechanges不會給出任何錯誤,但在第二個savechanges中,我得到的影響是excepcion 0行,因爲它看起來實體的時間戳已經從第一個savechanges更改爲第二個,所以在併發控制我得到這個excepction。

所以我想知道如何使用一個事務中的時間戳字段和兩個保存chages。

謝謝。

回答

0

我嘗試使用Set Computed,在這種情況下工作正常。