Каков правильный способ ввода зависимости доступа к данным при ленивой загрузке?
Например, у меня есть следующая структура класса
class CustomerDao : ICustomerDao
public Customer GetById(int id) {...}
class Transaction {
int customer_id; //Transaction always knows this value
Customer _customer = null;
ICustomerDao _customer_dao;
Customer GetCustomer() {
if(_customer == null)
_customer = _customer_dao.GetById(_customer_id);
return _customer
}
Как получить ссылку на _customer_dao в объект транзакции? Требование его для конструктора кажется, что это не имеет смысла, если я хочу, чтобы транзакция по крайней мере выглядела как POCO. Можно ли напрямую ссылаться на объект транзакции Inversion of Control Container? Это также кажется неудобным.
Как работают такие среды, как NHibernate?