2010-11-20 3 views
2

Этот вопрос задавали везде миллионы раз, но я не нашел удовлетворительного ответа, который был определен для моей проблемы. Итак, вот оно:Рекомендуемая архитектура n-уровня с EF4

В моей компании мы имеем дело с большими веб-сайтами электронной коммерции, и мы разбиваем наши приложения на уровни, которые представляют собой: Presentation, BLL, DAL, Application-specific-framework и Models (POCO) для удерживать и передавать данные через уровни.

Для доступа к базе данных мы пишем код с блоками данных в DAL-уровне. Данные сопоставляются с объектами DataReader на Model, которые, в свою очередь, передаются в BLL и на уровень Presentation.

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

Итак, что было бы лучшим способом вставить EF4 в эти уровни? Я имею в виду, должен ли я помещать файл .edmx в уровень DAL или в уровень модели? Должен ли я писать свои собственные классы моделей и отображать из класса Entity Model в один из моих классов Model?

Заранее благодарен!

ответ

0

Это был мой опыт, что EFx, в его нынешней форме (версия 4), лучше всего подходит для приложений с новыми полями.

В установленном приложении мы использовали модель, сгенерированную нами EF. Он был расположен в слое данных. Это потребовало от нас ссылки на уровень данных на каждом слое приложения. Не идеально, но это сработало.

Это зависит от размера вашего приложения и его сложности, но мы использовали EF для простых операций CRUD. Для более сложных запросов мы решили сохранить их в базе данных.

+0

Так что предположим, что я создаю новое приложение. Я бы хотел использовать EF4, но я бы не хотел, чтобы его модели передавались на каждый уровень (например, представьте, что я бы разоблачил некоторые вещи через веб-службу, тогда было бы неловко передавать модель EF4 вызываемому абоненту). Правильно ли было бы иметь модели POCO в Типовом ярусе и иметь заполнение DAL, прежде чем перейти к BLL? В этом случае BLL также передаст объекты POCO в DAL, а затем DAL должен будет сопоставить данные в объекте POCO с моделью EF4. Это нормально? Благодаря! –

+1

Это зависит от размера и срока службы вашего приложения. В меньшем приложении я бы просто использовал созданный EF модальный. По мере того, как приложение растет, было бы лучше переместить эти классы в бизнес-уровень. В более крупном приложении я бы начал использовать POCO и использовать EF. Недостатком является то, что вы теряете поддержку дизайнера. То, что вы ищете, это Code-First: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx. НТН –