Entity Framework Extended Batch Update方法如何处理默认值?

时间:2017-02-17 10:53:01

标签: entity-framework entity-framework-6 entity-framework-extended

我正在使用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对象的默认值。假设它有一个名为MyProperty的属性,它是int,默认为0。初始化Task对象时,MyProperty值的默认值为0。 Entity Framework Extended如何区分{em>默认值为0 的MyProperty,或者我是否尝试将所有匹配对象的MyProperty设置为默认值0,例如new Task { StatusId = 2 , MyProperty = 0}因为创建的Task对象在每种情况下都完全相同?

1 个答案:

答案 0 :(得分:1)

当你通过时:

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

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