我正在使用EF 4.4,我想更新許多實體,但其他一些用戶可以修改許多第一個用戶修改的實體。所以我得到了一個併發異常。其他情況是,第一個用戶嘗試添加許多新的寄存器,而其他用戶同時添加了一些新的寄存器。所以我有一個存在一些寄存器的異常(唯一約束)。這是刷新dbContext這兩種方式的區別嗎?
我想確保第一個用戶完成他的操作,只添加不存在的寄存器(添加除第二個用戶添加的實體外的所有實體)。
爲此,我需要更新我的dbContext中的實體,以便我看到至少有兩個選項。
首先,當我捕捉更新異常捕獲,我可以這樣做:
ex.Entries.Single().Reload();
第二個選項是:
myContext.Entry<MyTable>(instance).Reload();
我想,第二個選項只刷新我用作參數的實體,但如果問題是我需要刷新許多實體,那我該怎麼做?
第一個選項Single().Reload
是什麼?
如果有很多違規實體,它們全部被刷新或者只能一個一個地刷新? – 2013-05-05 06:53:03
總是有一個。 EF分別保存每個對象,導致衝突的第一個引發異常。當然,可能會有更多的事情會導致碰撞,但是他們還沒有得到保存,所以EF不知道他們應該被刷新。他們會在下次嘗試保存時發現。 – 2013-05-05 08:20:37