使用 LINQ 直接更新:绕过 Select 语句
使用 SQL 时,可以使用条件创建无需 select 语句的直接更新。使用 LINQ,常见模式涉及选择实体、修改实体和提交更改。
但是,如果您想使用 LINQ 执行直接更新并延迟执行,该怎么办?是否可以避免向客户端传输数据,直接执行SQL?
答案是肯定的。 LINQ-to-SQL 可以生成更新语句,而不需要 select 语句。这可以通过将具有键值的对象附加到上下文并修改其属性来实现。
例如:
Foo foo = new Foo { FooId = fooId }; // create obj and set keys context.Foos.Attach(foo); foo.Name = "test"; context.SubmitChanges();
通过为 Dbml 中的所有属性设置 UpdateCheck="Never"文件中,将生成单个更新语句,而不先选择原始实体。
需要注意的一个警告是,如果要将属性设置为 null,则需要使用不同的值初始化对象以允许 LINQ 检测到更改。例如:
Foo foo = new Foo { FooId = fooId, Name = "###" }; ... foo.Name = null;
此外,您可以通过在 Dbml 文件中将属性设置为 UpdateCheck="Always" 来检查更新期间的时间戳。这可确保更新语句包含基于时间戳值的条件。
以上是LINQ 可以在没有 Select 语句的情况下执行直接 SQL 更新吗?的详细内容。更多信息请关注PHP中文网其他相关文章!