#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. Иван Стоев Я хочу сделать «Изменение в памяти», но мне нужно поставить несколько циклов, которых я пытаюсь избежать