Кто-нибудь использовал Entity Framework с первым подходом кода, смешанным с файлом Edmx? - PullRequest
2 голосов
/ 06 декабря 2011

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

В настоящее время они используют EF 4.1, НО не кодовый первый подход с описанием объекта / отображением в файле edmx. Каждый раз они проводят реверс-инжиниринг, чтобы расширить модель (сначала внесите изменения в базу данных, а затем отразите их вверх до уровня модели с помощью специального инструмента).

Что я хотел бы знать, если бы кто-нибудь использовал ОБА EDMX и сначала подход кода с классами отображения. И есть ли недостатки, о которых нужно знать?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы можете использовать EDMX и сопоставление кода вместе, только если у вас есть отдельный тип контекста для каждого подхода (вы не можете смешивать подходы в одном типе контекста). Это, вероятно, самый большой недостаток, потому что это приводит к более сложному коду и обслуживанию.

Например, если вам нужно иметь какую-либо сущность в обоих типах контекстов, чтобы использовать ее как с новым, так и со старым кодом, вы должны поддерживать его отображение дважды. Вы также должны быть очень осторожны, чтобы не дублировать сам класс сущностей = ваш код должен сначала использовать класс, сгенерированный пользовательским инструментом для EDMX, но это будет невозможно, если они не используют POCO в текущем решении.

Еще одной проблемой будет целостность базы данных. Если вам нужно сохранить изменения обоих типов контекста в одной транзакции, вам придется использовать TransactionScope и распределенную транзакцию = MSDTC (каждый экземпляр контекста будет обрабатывать свое собственное соединение с базой данных).

Если вы уверены, что вся система будет перенесена, вы, вероятно, можете подумать об использовании кода в первую очередь вместо EDMX (но имейте в виду, что сопоставление кода в первую очередь и DbContext обычно предлагают более ограниченный набор функций). Если вы не уверены, что сможете выполнить полную миграцию, даже не думайте сначала об использовании кода, потому что если оставить систему в состоянии, когда половина использует код сначала, а половина EDMX, то все будет только хуже и намного ужаснее.

Быть уверенным - это немного теоретически, потому что при разработке ПО вы можете быть уверены только в том, что требования / ситуация изменятся. Это означает, что миграция должна быть очень тщательно продумана.

0 голосов
/ 11 июля 2012

Меня тоже поразила эта проблема.Я обнаружил, что вы можете смоделировать базу данных и « сгенерировать базу данных из модели » в « Ado.NET Entity model Project ».

Но вы не можете создавать хранимые процедуры в этом проекте. Единственное, что вы можете сделать, - это импортировать хранимые процедуры с сервера.

Но если вы не хотите создавать хранимые процедуры на сервере, вы можете создать другой проект для VS, " SQl CLR Database Project ", и вы можете кодировать свои хранимые процедуры и тигры вэтот проект и разверните их на сервере.

, затем вы можете снова импортировать эти хранимые процедуры из " Модель объекта Ado.NET Project " по " Обновить модель из базы данных".

Точно так же вы можете разработать свой серверный проект, используя оба подхода (сначала код и сначала модель)

Надеюсь, это добавит еще кое-что:)

...