我正在使用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
对象在每种情况下都完全相同?
答案 0 :(得分:1)
当你通过时:
.Update(t => new Task { StatusId = 2 });
您根本没有创建Task
对象。您正在传递批处理更新程序正在解析的表达式(并且根本不执行)。 new Task { StatusId = 2 }
永远不会被执行。