当我知道实体ID时,我想更新实体的唯一字段。
是否可以在LINQ to SQL中不检索完整实体(DataContext中的所有字段都是开销)?是否可以创建实体并将其附加到DataContext并标记确切的字段以在DataContext.SubmitChanges(或类似的东西)上进行同步?
先感谢您!
最佳答案
是的你可以:
Foo foo=new Foo { FooId=fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name="test";
context.SubmitChanges();
在您的Dbml中,为所有属性设置UpdateCheck =“Never”。
这将生成一个没有选择的单一更新语句。
一个警告:如果希望能够将Name设置为null,则必须将foo对象初始化为其他值,以便Linq可以检测到更改:
Foo foo=new Foo { FooId=fooId, Name="###" };
...
foo.Name=null;
如果要在更新时检查时间戳,也可以执行以下操作:
Foo foo=new Foo { FooId=fooId, Modified=... };
// Modified needs to be set to UpdateCheck="Always" in the dbml
关于.net - LINQ to SQL : how to update the only field without retrieving whole entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301811/