【发布时间】:2010-09-12 22:01:37
【问题描述】:
当我进行延迟加载时,注入数据访问依赖项的正确方法是什么?
例如我有以下类结构
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,那么为构造函数要求它似乎没有任何意义。让 Transaction 对象直接引用 Inversion of Control Container 可以吗?这似乎也很尴尬。
像 NHibernate 这样的框架如何处理这个问题?
【问题讨论】:
标签: inversion-of-control lazy-loading