#c# #asp.net-core #.net-core #entity-framework-core
#c# #asp.net-core #.net-ядро #entity-framework-core
Вопрос:
Я новичок в .Net Core и работаю над переносом консольного приложения .Net Framework в консольное приложение Core 3.1.5.
С EF в .Net Framework я мог бы использовать ctx.Database.ExecuteSqlCommand
для запуска некоторых сложных операторов SQL, которые было бы очень сложно выполнить с помощью оператора LINQ в EF. Использование встроенного SQL также позволило бы мне записать оператор SQL для отладки в гораздо более красивом виде по сравнению с протоколированием SQL-оператора EF, который может быть очень сложно прочитать при нескольких объединениях.
Глядя на это с помощью Core, кажется, что в ядре EF вы можете использовать Database.ExecuteSqlCommand
, но только для вставки / обновления / удаления, а не для выбора. Чтобы запустить встроенный SQL в качестве оператора Select в ядре EF, похоже, что вам нужно использовать модель сущности для выбора ex: ctx.Entity.FromSql(“myquery”)
. Дело в том, что используемые нами запросы могут иметь соединения с несколькими таблицами или даже ФУНКЦИЯМИ.
Можете ли вы запускать встроенные операторы SQL Select, которые имеют объединения или функции для одного объекта?
Ответ №1:
Да, но возврат из вашего запроса должен быть записями типа объекта. Сущность не обязательно должна быть сопоставлена с определенным объектом в базе данных, но может быть типом сущности без ключа.
Комментарии:
1. Спасибо @DavidBrowne-Microsoft, я добавлю это к ответу.
2. Я посмотрю на объект без ключа. Надеюсь, я смогу заставить что-то работать, потому что каждый раз, когда я думаю, что у меня достаточно примеров кода для моей команды, чтобы начать использовать Core поверх Framework, возникает препятствие, мешающее нам использовать Core.