C# LINQ到SQL更新时自动插入行拷贝
我正在使用这个简单的代码尝试更新一行C# LINQ到SQL更新时自动插入行拷贝,c#,linq,linq-to-sql,exception,C#,Linq,Linq To Sql,Exception,我正在使用这个简单的代码尝试更新一行 var MyDB = new SKN2DataContext(); var s_case = MyDB.SupportCases.FirstOrDefault(sc => sc.Id == 3); s_case.OpenDate = DateTime.Now; MyDB.SubmitChanges(); 在最后一行中,我遇到了以下例外情况 的对象的成员“Id”的值 类型“SupportCase”已更改。成员 定义对象的
var MyDB = new SKN2DataContext();
var s_case = MyDB.SupportCases.FirstOrDefault(sc => sc.Id == 3);
s_case.OpenDate = DateTime.Now;
MyDB.SubmitChanges();
在最后一行中,我遇到了以下例外情况
的对象的成员“Id”的值
类型“SupportCase”已更改。成员
定义对象的标识
无法更改。考虑添加
具有新标识和
而是删除现有的一个
当我通过在QuickWatch中调用GetChangeList看到发生了什么时,它表示DataContext正在尝试执行和更新(我希望如此)以及插入同一行(为什么???)。我不明白为什么DataContext要进行插入
编辑仅针对记录的OpenDate不包含在主键中。是否
OpenDate
是主键的一部分?我会先看看那里
s\u案例
不是null
?- 隔离您正在使用的代码,以确保没有其他原因导致它(如共享上下文)
- 在linq2sql设计器中重新添加该表李>
FirstOrDefault
我看到它返回null
。您正在检查此案例吗?实际上,在最后一行引发了异常。如果你所建议的是这种情况,那么在最后一行的第二行就会出现例外。我知道它不是空的