部分延迟加载

时间:2009-10-02 14:24:45

标签: c# nhibernate activerecord castle-activerecord

我有一个可以有多个帖子的对象用户。

示例:

在帖子IList<User> users = User.LoadAll()

上加载延迟加载的用户

然后我想只阅读users[2].Posts[3]的“一半”(只检索我想要的属性,而不是从那个帖子对象中检索所有属性),这可能吗?

(注意,我不想使用View)。

编辑: 有人可以给我一个简单的示例代码吗? 我试图找到一个没有成功。 感谢

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题 - 你想得到一个对象 - 在你的情况下发布 - 但只有一些属性 - 例如Post.Annotation而不是Post.Content,它们都是字符串。

此刻不可能。从数据库中检索的每个对象都将具有不是关系的所有属性,也不会加载集合。

您可以解决方法:

  1. 通过改变较大的属性 进入一个单独的实体,然后做 多对一映射并利用懒惰 装载

  2. 通过创建自定义查询,可以是HQL或带有投影的条件(基本上只有几列)。但是,这不会返回完整的对象。

  3. 希望我的问题正确......

答案 1 :(得分:-1)

不确定

您只需要在'User'类中声明集合类型的额外属性(例如'map'),将其'lazy'属性设置为false,并将'where'属性设置为所需的SQL-where子句。

答案 2 :(得分:-2)

是的,这是可能的。

当NHibernate从数据库重构一个对象时,它也可以重建所有对象的成员,创建一个完整的对象图。这称为级联,它是映射文件中定义的关联的属性,以及您不想要它的声音。请参阅docuemntation了解更多信息。

相关问题