2008-11-18 73 views
1

下面的代碼始終返回GetModifiedMembers(object) 中的空數組,但dx.GetChangeSet().Updates.Contains(foo)返回true。GetModifiedMembers返回空數組

DataContext dx = new DataContext(string.Empty); 
MockLinqDataObject foo = new MockLinqDataObject(); 
dx.GetTable(foo.GetType()).Attach(foo); 

foo.PK = Guid.NewGuid(); 

// always returns empty array 
ModifiedMemberInfo[] arr_Result = dx.GetTable(foo.GetType()).GetModifiedMembers(foo); 
bool isOk = (arr_Result.Length == 1); 
return isOk; 

有誰知道錯在哪裏?

在此先感謝?

回答

0

我知道這不是一個答案,但我一直無法複製您的問題。

在控制檯應用程序我得到長度1的陣列使用以下代碼:

testdbDataContext db = new testdbDataContext(); 
Address a = new Address(); 
db.GetTable(a.GetType()).Attach(a); 
a.Address1 = "simple change"; 

var result = db.GetTable(a.GetType()).GetModifiedMembers(a); 
Console.WriteLine(result.Length); 
Console.ReadKey(); 

控制檯輸出是1

嘗試修改foo對象上的另一個屬性,並查看結果是否不同。

0

如果您在SubmitChanges之後檢查長度,那麼您將得到長度爲0,因爲數據上下文中的更改在提交更改後被清除。