0

我正在使用 Entity Framework Extended 执行批量更新,就像其官方文档 ( https://github.com/loresoft/EntityFramework.Extended/wiki/Batch-Update-and-Delete ) 中的示例一样:

//update all tasks with status of 1 to status of 2
context.Tasks
.Where(t => t.StatusId == 1)
.Update(t => new Task { StatusId = 2 });

它有效,但我想知道内部工作原理。它如何处理Task对象的默认值。假设它有一个名为的属性MyPropertyint默认为0. 初始化对象时Task,它的MyProperty值将具有默认值0. Entity Framework Extended 如何区分MyProperty具有默认值 0,或者如果我试图将MyProperty所有匹配的对象设置为其默认值 0 ,例如在每种情况下new Task { StatusId = 2 , MyProperty = 0}创建的Task对象将完全相同?

4

1 回答 1

1

当你通过这个:

.Update(t => new Task { StatusId = 2 });

您根本没有创建Task对象。您正在传递批处理更新程序正在解析(并且根本不执行)的表达式。new Task { StatusId = 2 }永远不会被执行。

于 2017-02-17T11:03:21.917 回答