Все еще потеряно в репозиториях и развязке, ASP.NET MVC

Я все еще нахожусь в своем вечном стремлении создать (и понять) современные соглашения о программировании развязки, 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 раза. Каковы здесь лучшие практики?

6
задан Community 23 May 2017 в 11:47
поделиться