2009-05-20 6 views
6

Был занят созданием нового приложения, в основном у меня есть dataccess, уровень сервиса и уровень представления ... Все работает отлично, но я использую классы сущностей, которые возвращаются EF. Проблема здесь заключается в том, что я передаю их на уровень представления, поэтому мне нужно добавить ссылку на объект/dataccess на уровень представления - НЕ ХОРОШО:Automapper для использования с Entity Framework с использованием шаблона репозитория?

Итак, моя идея заключалась в следующем и искала некоторую помощь и подтверждение, что я спускаясь в правильном направлении ...

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

  2. Когда клиент объект возвращается в dataccess, я вернул бы класс сущности, то есть клиент, в службу d я бы сделал отображение здесь - Не слишком уверен, нравится ли мне это?

  3. , где были бы лучшие места для этих «стандартных классов», которые я использую для сопоставления, если я поместил их на уровень обслуживания и выполнил сопоставление данных, то это создаст круговую ссылку как Dataccess> service и сервис> DATAACCESS .. - он должен быть только один способ т.е. обслуживание> DATAACCESS

Я думал об использовании Automapper (http://www.codeplex.com/AutoMapper), чтобы заботиться об этом, я на правильном направлении ??? Любые идеи или примеры действительно оценены.

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

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

ответ

3

Вы попали в одну из слабых точек EF v1. Пока, да, переход с помощью AutoMapper позволяет вам конвертировать ваши объекты EF в «прямые» бизнес-сущности и использовать их в своем верхнем слое.

Кроме того, EF v4, который должен произойти с .NET 4.0/Visual Studio 2010, должен принести много облегчения во многих проблемных областях - поддержка ваших собственных, прямых POCOs (обычных объектов CLR) и большое количество Больше. Проверьте EF Design Blog. В последнее время команда опубликовала ряд очень интересных, очень перспективных должностей в отношении EF v4. Я с нетерпением жду этого!

Марк

0
  1. Вы можете использовать объекты EF в веб-проекта, если вы извлекаете их интерфейсы в ваш основной/общий проект и возвращают типы интерфейсов из хранилища или услуг, что веб-проект использует. Вы можете сделать объекты EF реализовать свои интерфейсы, путем создания частичных классов и добавления прямо:

    частичный класс клиента: ICustomer

  2. Несмотря на то, что вы можете сделать 1. трюк, вы, вероятно, должны в любом случае использовать automapper на карте эти объекты к вашим пользовательским объектам ViewModel, которые соответствуют вашему конкретному виду.Вы также можете сделать методы запросов репозитория/сервисов напрямую возвращенными DTO/ViewModels - это позволит иногда делать запросы более эффективными (запрашивая только нужные столбцы и т. Д.), Но для этого потребуются дополнительные сопоставления EF.

Смежные вопросы