Базовый объект Entity Framework или обычный командный объект Sql - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно создать решение в ядре Asp.net, и я должен использовать подход, основанный на хранимых процедурах.Так возможно ли использовать ядро ​​Entity Framework для приложения?Поскольку данные возвращаются из хранимой процедуры, а не объекта, объявленного в Entity Core

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Важно понимать, что нужно.Entity Framework и использование обычной команды SQl, у обоих есть свои плюсы и минусы.

Основные моменты:

Entity Framework

  1. Может выступать в качестве ORM для разных баз данных, если ваше приложение использует две или более баз данных, таких как SQL server & oracle.Почти тот же код может быть использован.Кроме того, проще переключаться с одной базы данных на другую.

  2. EF имеет сначала код, и сначала базу данных, а также поддерживает соединения и генерацию запросов, поэтому меньше заботится о внедрении SQL и более быстрых изменениях

  3. Использование EF, однако, если в вашей команде много разработчиков, которые часто вносят изменения в EF, трудно объединить конфликты кода внутренних слоев для EF.

  4. Еслиу вас есть надежное промежуточное ПО и кэширование, EF можно оптимизировать для кэширования приложений.

Объект команды SQL

  1. Больше контролячерез SQL, так как запросы, сгенерированные в EF, во время выполнения так трудно анализировать и оптимизировать индексы и план выполнения.

  2. Необходимо позаботиться о SQL-инъекциях, проблемах с прослушиванием параметров.

  3. Нет проблем для слияния кода, пока проектирование БД не будет выполнено при консультации с большими группами разработчиков.

  4. Объекты команд SQL легче отлаживать и анализировать при обслуживании с меньшими затратамиусилиеизменения, так как вам не нужно обновлять целые файлы EF и связанный с ними код.

Команды с выделенным DBA и большим сервером для БД выбирают команду SQL, Команды с небольшой гибкой командой с полным стеком с помощьюсильное промежуточное программное обеспечение обычно идет на EF.

Оба они хороши для некоторых случаев использования, и ни один из них не является серебряной пулей для всех.так что выбирайте то, что вам больше подходит.

0 голосов
/ 24 сентября 2018

EF Core предоставляет следующие методы для выполнения хранимой процедуры:

  1. DbSet<TEntity>.FromSql()

  2. DbContext.Database.ExecuteSqlCommand()

    var data = context.DbSet<TEntity>.FromSql("SPName").ToList();

    var rowsAffected = context.Database.ExecuteSqlCommand("sql command");

Для получения дополнительной информации: entityframeworktutorial

и для использования полей, которые не существуют вмодель, вы можете объявить их в модели и использовать атрибут NotMapped. NotMapped Attribute

И для отображение хранимых процедур, бегло посмотрите на эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...