Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到SQL更新时自动插入行拷贝_C#_Linq_Linq To Sql_Exception - Fatal编程技术网

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设计器中重新添加该表
我不明白s_case“not null”是什么意思。它只是一个由lambda表达式返回的对象。它应该如何为null或不为null?使用
FirstOrDefault
我看到它返回
null
。您正在检查此案例吗?实际上,在最后一行引发了异常。如果你所建议的是这种情况,那么在最后一行的第二行就会出现例外。我知道它不是空的