Как метод пакетного обновления 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 различает MyProperty
имеющий значение по умолчанию 0, или если я пытаюсь установить MyProperty
для всех сопоставленных объектов их значение по умолчанию 0, например new Task { StatusId = 2 , MyProperty = 0}
как созданный Task
объект будет точно таким же в каждом случае?
1 ответ
When you pass this:
.Update(t => new Task { StatusId = 2 });
You are not creating a Task
объект вообще. You are passing in an expression which the batch updater is parsing (and not executing at all). new Task { StatusId = 2 }
никогда не выполняется.