GetModifiedMembers返回空数组

时间:2008-11-18 13:16:14

标签: c# .net linq-to-sql

以下代码始终从GetModifiedMembers(object)返回一个空数组 但dx.GetChangeSet().Updates.Contains( foo )返回true。

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;

有谁知道有什么问题?

提前致谢?

2 个答案:

答案 0 :(得分: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对象上的另一个属性,看看你的结果是否不同。

答案 1 :(得分:0)

如果在SubmitChanges之后检查长度,则长度为0,因为在提交更改后数据上下文中的更改会被清除。