2009-10-02 60 views
2

我有一个对象可以有多个职位的用户。部分延迟加载

例子:

负载上的帖子IList<User> users = User.LoadAll()

然后我想只读了users[2].Posts[3]的“半壁江山”(只获取我想要的属性,而不是从所有这些延迟加载用户那个帖子对象),这是可能做到的吗?

(注意,我不想使用视图)。

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

回答

2

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

这是不可能的。从数据库检索的每个对象都将具有所有不属于关系或集合的属性。

你可以做一个变通方法:通过转动较大的性能 到一个单独的实体,创建自定义

  1. ,然后做 多到一的映射,并利用懒 装载

  2. 查询是HQL还是带投影的标准(基本上只有几列)。但是这不会返回完整的对象。

希望我把你的问题的权利......

+0

是的,那是我的问题,能够从懒加载只能得到一些属性从对象,而不是全部。我想知道NHibernate团队是否会想出一些方法来创建“自定义延迟加载映射”,允许有多种方法来加载一个对象(全部,部分)。 – Dryadwoods 2009-10-10 11:57:12

-2

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

-1

当然。

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