Я все еще нахожусь в своем вечном стремлении создать (и понять) современные соглашения о программировании развязки, IoC, DI и т. Д. Я подошел к той части, где я пытаюсь выяснить, как построить репозиторий. Я изучил сообщение на Проектирование уровня абстракции базы данных - Как правильно использовать IRepository? , что было очень полезно, но я ' У меня все еще есть некоторые проблемы, которые меня просто сбивают с толку.
Моя программа теперь состоит из четырех слоев ...
Веб (Проект | Приложение ASP.NET MVC) - Ссылки Models.dll и Persistence.dll
Модели (объекты домена)
Постоянство (свободное отображение объектов домена в nHibernate)
Утилиты (поставщики, репозитории)
Итак, я пытаюсь написать простой репозиторий членства. Моя первая задача ...?
Проверьте, существует ли адрес электронной почты, когда кто-то пытается зарегистрироваться. Все это выглядело хорошо, поэтому я пытаюсь выяснить, где это разместить.
Сначала я бы просто поместил его внутри класса MembershipProvider
класса CreateUser
метод. Это, однако, находится в проекте Utilities. Пока что Utilities ничего не знает о nHibernate. Только проект Persistence имеет какие-либо знания о nHibernate.
Итак, мой метод CreateUser
должен запросить мою базу данных. Итак, что здесь лучше всего? Могу ли я создать UserRepository
в проекте Persistence
и просто создать весь метод под названием CheckEmail
? Или мне просто добавить nHibernate .dll в мой проект Utilities
и написать поиск сеанса в Provider?
Похоже, больше работают над созданием репозиториев в моем проекте Persistence, который делать конкретные действия, чем делать провайдеры. Зачем я вообще делаю провайдеров, если мне нужно делать для них репозитории? Разве цель всех этих новых методов не в том, чтобы остановить повторение кода? Но это похоже на то, чтобы вещи были разделены Мне приходится писать один и тот же код 2 или 3 раза. Каковы здесь лучшие практики?