2008-11-18 74 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,因为数据上下文中的更改在提交更改后被清除。