2011-07-06 34 views
0

我有一個行設置(timestamp)列,它被設置爲在我的EF設計器中計算。如何使用EntityFramework 4.1 DbContext API覆蓋計算值

設置代碼中的值,通過直接財產一樣

 myEnt.rowversion = screenRowVersion; 

有當SaveChanges()被稱爲現在的效果,一絲SQLServer的顯示,使用rowversion的原始值。

是否有可能讓DbContext API接受外部計算值?

回答

1

EF不允許覆蓋計算值 - 它始終使用從數據庫加載的原始值。有辦法解決這個,你騙EF和更改上下文跟蹤的原始值:

context.Entry(myEnt).OriginalValues["rowversion"] = screenRowVersion; 

但無論如何,在時間戳的情況下是不需要的。你有舊的時間戳和新的時間戳,所以你可以compare them in your application沒有必要的往返數據庫。