Сначала я решил создать один интерфейс под названием IDataAccessLayer
и начал вкладывать в него все: методы типа GetUsers()
, GetUser(int id)
, GetOrderByNumber(int number)
, DeleteOrder(int Id)
и т. Д.
Это сработало простоидеально сначала.Но потом я понял, что конкретная реализация DataLayer:IDataLayer
становится большой.Я решил разрезать его на несколько частичных файлов классов.Тем не менее я чувствовал, что я делаю что-то действительно неправильное.
Затем я решил создать интерфейсы для каждой логической части, например IUsers
, IOrders
, IItems
и т. Д. Не сработало, потому что яосуществлял доступ к хранилищу через одно зависимое свойство, введенное в конструктор контроллера.Поэтому я не мог просто добавить другое свойство каждый раз, когда мне нужно использовать другой тип dataContext в моем контроллере.
Затем, после долгих часов чтения статей о Entity Framework, я наконец понял, что должен использовать шаблоны Repository и Unit of work .И все же мне нужно как-то отделить POCO от моих объектов ViewModel, хотя почти все время они будут иметь общие черты.Automapper очень помогает.Но сейчас я не уверен, как использовать все вместе.Платформа Entity Framework, Patterns, Automapper и Dependency инъекция, такая как Ninject.
У меня нет четкого понимания, как объединить все это в одну удивительную архитектуру.Не могли бы вы показать мне несколько хороших примеров.