Комплексное обновление нескольких строк с помощью ядра Entity Framework

#linq #entity-framework-core

Вопрос:

Мне нужно обновить ядро Entity Framework в нескольких строках.

У меня есть 2 таблицы: шаг проекта и определение шага. У ProjectStep есть ProjectStepId, ParentStepId(указывающий на таблицу ProjectStep) и идентификатор шага. Определение шага имеет идентификатор определения шага и идентификатор родителей(указывает на таблицу определения шага). Мне нужно обновить ParentStepId в таблице ProjectStep на основе значений в определении шага Вот как бы я сделал это в SQL Server:

 UPDATE  ps
SET     ParentStepId=ps1.ProjectStepId         
FROM    ProjectStep ps INNER JOIN
        StepDefinition sd ON ps.StepDefinitionId = sd.StepDefinitionId INNER JOIN
        ProjectStep AS ps1 ON sd.ParentStepId = ps1.StepDefinitionId and ...
 

и в SQL Server это работает как волшебство. Как это сделать в ядре Entity Framework? Предпочтительно с помощью Wir Linq.
Спасибо

Комментарии:

1. С помощью EF Core невозможно создать это обновление sql. Вы можете выполнить свой собственный sql с помощью команды ExecuteSQL или обновить его в скрипте C#.

2. да, но если я внесу изменения в базу данных, я должен перезагрузить данные в Entity Framework

3. Linq предназначен для запросов. CUD в ядре EF выполняется с использованием шаблона загрузки/изменения/сохранения, поэтому эквивалента SQL DML также нет. Это из коробки. Есть несколько пакетов сторонних производителей, которые могут сделать то, о чем вы просите. Но поскольку он не поддерживается из коробки, не уверен, каковы их ограничения (например, поддерживаемые базы данных и т. Д.).

4. Но если вам все равно нужно «перезагрузить данные» после этого, просто используйте подход EF Core (загрузка/изменение в памяти/сохранение изменений).

5. Иван Стоев Я хочу сделать «Изменение в памяти», но мне нужно поставить несколько циклов, которых я пытаюсь избежать