Код первый подход против базы данных первый подход - PullRequest
0 голосов
/ 26 января 2012

Я работаю над веб-приложением asp.net MVC 3 и сначала использую базу данных, но после того, как я сопоставил таблицы БД с классами сущностей, используя структуру сущностей, я взаимодействую с этими таблицами, так как буду взаимодействовать спервый подход кода, имея дело с таблицами базы данных как классы объектов.

Итак, после сопоставления таблиц с классами сущностей я обнаружил, что подход кода сначала и сначала база данных очень похожи, но за исключением начала написания классов сущностей с нуля (как в коде сначала), я создал классы сущностей изсуществующие таблицы базы данных - что проще и удобнее в моем случае.

Так что есть конкретные случаи, в которых я не смогу выполнять некоторые функции, если я не использую один подход над другим, который досейчас я не могу найти?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Разобравшись со многими головными болями, используя db-1st EDMX pre EF 4.1, я неравнодушен к code-first. Но я не собираюсь проповедовать это.

Помимо функций прямого отображения и импорта функций, упомянутых в ответе и комментарии Павла, вы не сможете изменять пространства имен или любой другой код в сгенерированных файлах при использовании db-first. Afaik все файлы вложены в файл .tt. Если в вашем проекте есть способ переместить их в логические папки и пространства имен, то я не знаю об этом.

Также, если вы когда-нибудь захотите отделить ваш DbContext в отдельный проект от ваших сущностей, я напомню, что это было возможно до EF 4.1. Но это было более обременительно, потому что вам приходилось запускать пользовательский инструмент для обоих файлов .tt после каждого изменения БД. С первым кодом это довольно просто, потому что вы имеете дело с чистым ООП.

1 голос
/ 26 января 2012

Я думаю, что самое большое ограничение CodeFirst (по сравнению с подходами ModelFirst / DatabaseFirst) заключается в том, что вы не можете отобразить свои операции CUD на хранимые процедуры.Если вы не планируете этого делать, тогда вам следует идти.Чтобы быть более конкретным - Вы можете вызывать хранимые процедуры, используя метод SqlQuery в DbSet, который приведет к отслеживанию возвращаемых объектов, или более общий SqlQuery и ExecuteSqlCommand в классе Database (для Database.SqlQuery возвращаемые объекты не обязательно должны быть объектами, и естьнет отслеживания для этих объектов).Вот и все.Вы не можете сопоставить операции создания / обновления / удаления с хранимыми процедурами.FunctionImports также не поддерживаются

EDIT

Теперь можно отобразить операции CUD для хранимых процедур в EF6

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