什么是NHibernate的Castle代理工厂?它的任务是什么?代理在这种情况下意味着什么?
Fre*_*els 11
可以使用Castle(其中包括您可以选择,也可以使用LinFu,Spring.NET,...)来创建实体的动态代理.
默认情况下,NHibernate使用动态代理来表示您的实体; 通过这样做,当您从数据库中检索某个实体时,它能够返回一个对象,而不会填充所有属性.通过使用动态代理,只有在您真正引用属性时才会填充实体.
(所以这是一种延迟加载;不要与延迟加载集合/关联混淆).
这个行为是NHibernate希望你默认创建每个属性为虚拟的原因:NHibernate将使用继承自你的实体的Castle(或LinFu,...)代理提供程序创建一个新类,它将覆盖所有属性这样它就可以"注入"从数据库中检索必要数据所需的代码.
您可以通过在实体映射中指定"lazy = false"来禁用此行为.(虽然,我确实认为即使您禁用此功能,NHibernate仍然会要求您使用其中一个代理工厂).
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |