Я пытаюсь быть лучшим разработчиком ...Разделение Касается Repository Pattern & Entity Framework 3.5
Что я работаю с:
- .Net MVC Framework 1.0
- Entity Framework 3,5
Я делал некоторое чтение, и я думаю, что я хочу сделать, это:
- Создайте репозиторий для каждого агрегата в домене. Например, хранилище заказов будет управлять OrderItems заказа.
- Создайте сервисный уровень для обработки бизнес-логики. Каждый репозиторий будет иметь соответствующий объект службы с аналогичными методами.
- Создать DTO в прошлом между хранилищем и сервисом
- Возможно создание ViewModels, которые являются классами для View, чтобы потреблять.
У меня есть интерфейс хранилища базы, который мои агрегатные интерфейсы хранилища будет осуществлять ...
public interface IRepository<T>
{
IEnumerable<T> ListAll();
T GetById(int id);
bool Add(T entity);
bool Remove(T entity);
}
Мой заказ Repository интерфейса определяется следующим образом ..., вероятно, будет использовать дополнительные методы, как я получить больше в это упражнение.
public interface IOrderRepository : IRepository<Order>
{
}
Мои классы обслуживания по существу определяются так же, как и репозитории, за исключением того, что каждая реализация службы включает в себя бизнес-логику. Сервисы будут использовать интерфейс репозитория в конструкторе (я не готов к IoC в этом упражнении, но считаю, что именно там я хотел бы закончить вниз по дороге).
- Реализация хранилища будет выталкивать и извлекать из базы данных с помощью Entity Framework. При получении данных; методы возвратят только DTO, а не созданные EF объекты.
- Службы (как я их называю) будут управлять репозиторием и выполнять бизнес-логику. Услуги - это то, что вы увидите в контроллере, то есть _orderService.GetById (1).
- Здесь я начал flip flopping и мог использовать некоторую обратную связь ... Должен ли я, если бы мои классы обслуживания заполняли классы ViewModel ... не следует ли иметь классы ViewModel .... возможно, это слишком много картирование от одного типа другому?
Я хотел бы получить некоторую обратную связь по направлению, в котором я направляюсь, в отношении разделения проблем.
Благодаря
Я пытаюсь сделать то же самое, но я не могу придумать хороший способ обработки метода включения EF? –
P.S. Вы уверены, что имеете в виду EF 3.5? Я думаю, что версия 1 - это текущая версия, а версия 2 - в бета-версии. Или, я использую v старую версию. –
EF 3.5 = версия 1, EF 4.0 = версия 2 – bobwah