По моему мнению, поскольку ваше приложение / база данных не страдает от проблем с производительностью, и вы в основном используете базу данных для CRUD и обращаетесь к ней, используя только одного пользователя БД, лучше использовать сгенерированный SQL. Он быстрее разрабатывается, более удобен в обслуживании, а те немногие преимущества в области безопасности или большей конфиденциальности не стоят этого (если данные не настолько чувствительны). Также использование доступа к базе данных на основе модели или LINQ отключило угрозу от инъекций SQL.

ользовал структуру сущностей в нескольких проектах. В каждом проекте я использовал хранимые процедуры, сопоставленные с сущностями, из-за хорошо известных преимуществ хранимых процедур - безопасности, удобства обслуживания и т. Д. Однако 99% хранимых процедур - это базовые хранимые процедуры CRUD. Кажется, что это сводит на нет одну из основных, экономящих время функций Entity Framework - генерацию SQL.

Я прочитал некоторые аргументы относительно хранимых процедур и сгенерированного SQL из Entity Framework. Хотя использование CRUD SP лучше для безопасности, а SQL, генерируемый EF, часто более сложен, чем необходимо, действительно ли он что-то приобретает с точки зрения производительности или удобства использования SP?

Вот что я верю:

В большинстве случаев изменение SP требует обновления модели данных в любом случае. Таким образом, это не покупает много с точки зрения ремонтопригодности.Для веб-приложений при подключении к базе данных используется один идентификатор пользователя, определенный для приложения. Таким образом, пользователи даже не имеют прямого доступа к базе данных. Это уменьшает выгоду безопасности.Для небольшого приложения немного сниженная производительность от использования сгенерированного SQL, вероятно, не будет большой проблемой. Для больших объемов, критически важных приложений, EF будет даже мудрым выбором? Плюс, действительно ли операторы вставки / обновления / удаления, сгенерированные EF, настолько плохи?Отправка каждого атрибута в хранимую процедуру имеет свои собственные ограничения производительности, тогда как сгенерированный EF-код отправляет только те атрибуты, которые действительно были изменены. При обновлении больших таблиц увеличение сетевого трафика и накладных расходов на обновление всех атрибутов, вероятно, сводит на нет преимущества в производительности хранимых процедур.

С учетом сказанного, мои конкретные вопросы:

Правильны ли мои убеждения, перечисленные выше? Является ли идея всегда использовать SPs чем-то, что является «старой школой» сейчас, когда ORM набирают популярность? По вашему опыту, как лучше всего использовать EF - отображать SP для всех операций вставки / обновления / удаления, или использовать EF-сгенерированный SQL для операций CRUD и использовать только SP для более сложных вещей?

Ответы на вопрос(1)

Ваш ответ на вопрос