.net - LINQ to SQL : how to update the only field without retrieving whole entity

标签 .net linq-to-sql

当我知道实体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/

相关文章:

c# - 给定一个成员访问 lambda 表达式,将其转换为具有完整访问路径的特定字符串表示形式

c# - 序列数据库字段和更新排序顺序的查询

c# - 如何使用 LINQ to SQL 还原关联记录

c# - 为什么要在 C# 中再次分配数组中的每个元素

c# - 空条件运算符

.net - 在 Windows 10 上构建 Windows 通用应用程序时遇到问题

c# - Linq查询类型推断在加入调用中失败

c# - Entity Framework 延迟加载不起作用

c# - 使用 LINQ to SQL 记录更改

c# - LINQ To SQL 不保存到数据库