【问题标题】:Lazy-load collection with Spring.Net使用 Spring.Net 进行延迟加载集合
【发布时间】:2011-10-29 09:49:58
【问题描述】:

我在我的项目中使用 Spring.Net 进行依赖注入。现在我也想用它来延迟加载我的对象属性。

这是一个例子:

我用:

  • CustomerDao 访问数据库 (getCustomer(idCustomer), getAddresses(idCustomer))
  • 客户(姓名、姓氏、IList 地址……)
  • 地址 (...)

我想将 Spring.Net 配置为延迟加载 Customer.Addresses 属性。

我想我必须使用拦截器...你能指出一个简单的配置示例吗?

【问题讨论】:

  • 我是否理解正确,您所有的客户和地址实例都是在您的 spring 配置中配置的?这将是非常不寻常的。大多数时候,您从某种数据库中检索这些类型的对象(实体)。
  • 不行,Spring中只配置了CustomerDao。客户和地址是 POCO 实体。

标签: c# nhibernate aop spring.net


【解决方案1】:

您可以使用 Castle Windsor DynamicProxy 实现来创建您自己的代理来延迟加载您的对象属性。但这不是一件小事!

如果您想在 DAO/DAL 中延迟加载对象属性,我建议您使用像 NHibernate 这样的体面的 ORM 实现。

您可以在 github 上的 SubSonic 项目存储库的 this file 中找到自己做代理的实现示例。

【讨论】:

  • 我知道 NHibernate,我知道 Castle... 在这个项目中我不能使用它们!我必须使用没有 ORM 的 Spring.Net。
  • 我指出了 subsonic 的代理实现 - 这应该可以让您了解如何实现自己的代理实现。
  • Afaik Spring.NET 使用 Castle Dynamic Proxy for AOP,所以你可能想检查一下你是否可以使用它。
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 2018-08-30
相关资源
最近更新 更多