以下代码始终从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;
有谁知道有什么问题?
提前致谢?
答案 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,因为在提交更改后数据上下文中的更改会被清除。