2013-03-12 59 views
4

隨着ObjectContext的:GetModifiedProperties不工作的EF4.1的DbContext

var objContext = new ObjContextEntities(); 
var accountType = objContext.AccountTypes.FirstOrDefault(x => x.Id == 0); 
accountType.Name = "ABC"; 
var stateEntry = objContext.ObjectStateManager.GetObjectStateEntry(accountType); 
Console.WriteLine(stateEntry.GetModifiedProperties().Count()); //--------> Outputs 1 as expected 

憑藉的DbContext:

var dbContext = new DbContextEntities(); 
var accountType = dbContext.DBAccountTypes.FirstOrDefault(x => x.Id == 0); 
accountType.Name = "XYZ"; 
var dbObjContext = ((IObjectContextAdapter)dbContext).ObjectContext; 
var stateEntry = dbObjContext.ObjectStateManager.GetObjectStateEntry(accountType); 
Console.WriteLine(stateEntry.GetModifiedProperties().Count()); //--------> Outputs 0 

我想遷移到使用的DbContext,但我有一些代碼依賴於這個特徵。這是一個已知的錯誤?任何人都可以提出另一種方法嗎謝謝。

回答

8

好吧,這似乎這樣的伎倆:

var dbContext = new DbContextEntities(); 
var accountType = dbContext.DBAccountTypes.FirstOrDefault(x => x.Id == 0); 
accountType.Name = "XYZ"; 
var entry = dbContext.Entry(accountType); 
var modifiedProperties = entry.CurrentValues.PropertyNames.Where(propertyName => entry.Property(propertyName).IsModified).ToList(); 
Console.WriteLine(modifiedProperties.Count()); //--------> Outputs 1 

更多有用的信息在這裏:http://msdn.microsoft.com/en-US/data/jj592677

+0

精彩!謝啦!! – 2014-12-18 14:02:05

相關問題