Entity Framework扩展批量更新方法如何处理默认值?

How does Entity Framework Extended batch Update method deal with default values?

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

当你通过这个时:

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

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