Как метод пакетного обновления 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 } никогда не выполняется.

Другие вопросы по тегам