我在我的ASP.NET MVC應用程序中使用基於代理的已更改跟蹤的EF5代碼優先。 我的一個域類包含一個非常頻繁更新的數字屬性。出於這個原因,這個屬性是不是持久的使用框架的數據庫:基於代理的更改跟蹤,屬性未在POCO對象中更新
public virtual int CurrentSessions
{
get
{
return _currentSessions;
}
set
{
Interlocked.Exchange(ref _currentSessions, value);
}
}
我面臨的問題是財產的價值是不是在會話更新。我的API控制器或者增加上述值或減小它,根據內部邏輯,如下所示:
myObj.CurrentSessions++;
或
myObj.CurrentSessions--;
其中MyObj中是一個代理對象從上下文經由LINQ在每個會話中檢索:
var myObj = objectContext.Instances<myPocoEntity>().FirstOrDefault(cb => cb.SomeProp == someValue);
當我檢查myObj.CurrentSessions的價值已經上升後/減少,這的確是更新,但在下一次服務器的請求,當MyObj中是RET CurrentSessions始終具有初始值,爲零。
如何確保在POCO實體中更新屬性值而不掃描整個上下文以進行更改?
我會澄清:我說的是一個單一的** ** ** ** ObjectContext的 - 不是的DbContext - 實體(雖然有很多這樣的不同的實體)我正在更新跨不同的ASP.NET MVC行動(想想多個客戶端發出「開放」和「關閉」請求,相應地增加和減少計數器。我的問題是在一個會話中計數器值的更改不反映在接下來的會話中,訪問相同(但代理)的計數器屬性。 – ury