使用POCO进行延迟加载的存储库模式

lan*_*der 8 c# design-patterns data-access-layer repository

我正在开始一个新项目并创建业务对象和数据访问等.我只是使用普通的旧clr对象而不是任何orms.我创建了两个类库:1)Business Objects - 保存我的所有业务对象,所有这些对象都很轻,只有属性和业务规则.2)存储库 - 这是我所有的数据访问.

我的大多数对象都有子列表,我的问题是延迟加载这些值的最佳方法是什么,因为如果我不需要,我不想带回不必要的信息.

我已经考虑过在子属性上使用"get"来检查它是否为"null",以及是否调用我的存储库来获取子信息.从我所看到的这有两个问题:1)对象"知道"如何获得自己我宁愿不在对象中保存数据访问逻辑.2)这需要两个类相互引用,在visual studio中引发循环依赖性错误.

有没有人对如何克服这个问题或我的项目布局的任何建议以及可以改进的地方有任何建议?

谢谢

lan*_*der 2

在研究了提供的答案和进一步研究之后,我发现了一篇使用委托进行延迟加载的文章。这提供了比使用代理或实现 NHibernate 更简单的解决方案。

这是文章的链接。