Мне нужен совет: Я бы хотел отключить зависимости nHibernate в слоях Presentation и Business Logic, чтобы иметь только уровень логики доступа к данным, ссылающийся на DLL nHibernate.C# nhibernate mulitier architecture
Я вижу только решения, использующие объекты SessionHelper/SessionManager и все созданные на верхнем уровне. Я считаю, что лучшее решение должно существовать.
Какую модель дизайна следует придерживаться? Могу ли я wncapsulate сеанс (менеджер, помощник и т. Д.) В шаблоне репозитория и легко изменить ORM, не форсируя изменения на уровне бизнес-логики?
Образец кода будет оценен. Заранее спасибо.
«легко изменить ORM?» вы можете использовать только наименьший общий знаменатель между всеми ORMS, которые вы, возможно, захотите использовать. Вы будете страдать от проблем с производительностью, потому что вы не можете использовать множество функций, чтобы улучшить это, и у вас будет непротекающая абстракция. – Firo
Этот вопрос возникает много, и общий ответ: не делайте этого. Очень мало случаев, когда возможность замены ORM стоит значительных компромиссов. Трудно «скрыть» ОРМ, не полностью стерилизовать его. –
Привет @MichaelMaddox: Теоретически я не хочу переключать ORM, так как Клиент не платит такого рода инвестиции. Моя цель - реализовать базовые/общие классы (применять во всех моих проектах), и это позволяет мне скрывать то, что я не хочу видеть (т. Е. Зависимости от ORM). Я хотел бы инкапсулировать сеанс nhibernate, EF objectcontext и т. Д. Как бы вы реализовали такой класс? – Joao