在LINQ中更新对象

Mik*_*nes 1 c# linq asp.net

我想在Linq做一个更新.

public myFunc(MyItem newItem)
{
  using(var db = new myDataContext())
  {
     var item = (from o in db.myTable where o.id == myId select o).First();
     item = newItem;
     db.SubmitAllChanges();
  }
}
Run Code Online (Sandbox Code Playgroud)

这不会更新对象,我猜item = newItem更改项目以引用另一个.如果我更改了各个字段(item.Name = newItem.Name等),则会反映出更改,但我不想将MyItem类的内容分散到多个位置以降低可维护性.有没有办法在逐个字段的基础上制作item = newItem副本?

MyItem也与另一个表有关系,我想将newItem中的下级项更新为item.(FWIW,没有添加或删除,只是更新.)是否有标准化的流程来执行此操作?

谢谢你的帮助.

Jon*_*eet 6

好吧,MyItem应该是一个部分类 - 所以你可以添加一个CopyPropertiesFrom方法MyItem,然后写

item.CopyPropertiesFrom(newItem);
Run Code Online (Sandbox Code Playgroud)

而不是你当前的任务.

顺便说一下,您可能需要考虑使用它而不是当前查询:

var item = db.myTable.First(o => o.id == myId);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只是使事情比查询表达式更简单:)