Я читаю официальное Ваше первое приложение на основе NHibernate .
Хотя учебник хорош и легок для понимания, мне интересно, почему используется шаблон Repository.
В различных Add
, Update
, Remove
методы в ProductRepository
реализации, код почти идентичен - все они используют транзакции, а разница в «мясо» , то есть вызов session.Save
INT Add
метод, session.Delete
в remove
методе. ( На странице отсутствуют привязки HTML, но вы можете выполнить поиск на соответствующем коде, например public void Remove
,public void Add
)
Этот код просто "чувствует себя неправильно".
Почему автор использует шаблон Repository - это просто для демонстрации использования NHibernate или это требуется или по какой-то другой причине?
Ps. Мой опыт работы в Ruby on Rails с использованием ActiveRecord, поэтому я пытаюсь понять, как работает / используется NHibernate.
источник
Ответы:
Шаблон хранилища не требуется. Что касается всех остальных шаблонов, то это «архитектурное» решение, которое вы должны принять в соответствии с потребностями вашего бизнеса. В общем случае, шаблон репозитория используется для реализации «Entity Persistance Ingorance», что означает, что ваши сущности ничего не знают о том, как сохранить себя на вашем устройстве хранения (База данных, XML, TextFile и т. Д.). Если, например, у вас есть адрес объекта, он не будет содержать логику персистентности (вы нигде не найдете что-то вроде address.Save или address.Update), но вы передадите свой объект в метод репозитория, который отвечает за сохранение изменения
источник
Преимущество использования шаблона репозитория заключается в том, что он позволяет имитировать уровень доступа к данным, чтобы вы могли тестировать код бизнес-уровня без вызова кода DAL. Есть и другие большие преимущества, но мне кажется, что это очень важно.
источник