В архитектуре n-уровня лучше всего разместить объектно-реляционное сопоставление (OR/M) на уровне доступа к данным. Например, запросы и обновления базы данных можно делегировать на такой инструмент, как NHibernate.Создание OR/M слабо связан и абстрагировано от других слоев
Тем не менее, я хотел бы сохранить все ссылки на NHibernate в пределах уровня доступа к данным и абстрактных зависимостей от слоев ниже или выше. Таким образом, я могу поменять или подключить другое средство OR/M (например, Entity Framework) или какой-либо подход (например, простые вызовы хранимой процедуры ванили, макетные объекты), не вызывая ошибок во время компиляции или капитального ремонта всего приложения. Возможность тестирования - дополнительный бонус.
Может ли кто-нибудь предложить оболочку (т. Е. Интерфейс или базовый класс) или подход, который сохранит OR/M слабо связанными и содержащимися в 1 слое? Или указать мне на ресурсы, которые помогут?
Спасибо.
Мне также нужны карты данных или DAOS, так как репозитории будут находиться между моделью домена и уровнем доступа к данным. Подробнее см. Здесь: http://martinfowler.com/eaaCatalog/repository.html Модель домена будет содержать репозитории, но не может содержать ссылку на уровень доступа к данным. Поэтому DAO необходимо будет ввести в репозитории. Моя основная цель - создать базовый класс DAO для каждой технологии доступа к данным (например, NHibernate, Entity Framework, хранилище XML, ...) наследует общий интерфейс. Таким образом, я могу поменять или смешать их по своему усмотрению без перекомпиляции или серьезной переделки. – Genuine
Похоже, вы на правильном пути. –