2

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

例子:

在帖子上使用延迟加载加载用户IList<User> users = User.LoadAll()

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

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

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

4

3 回答 3

2

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

目前这是不可能的。从数据库中检索到的每个对象都将具有其所有属性,这些属性既不是关系也不是加载的集合。

你可以做一个解决方法:

  1. 通过将大属性转换为单独的实体,然后进行多对一映射并利用延迟加载

  2. 通过创建自定义查询,无论是 HQL 还是带有预测的标准(基本上只有几列)。然而,这不会返回完整的对象。

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

于 2009-10-08T08:50:00.697 回答
-1

当然。

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

于 2009-10-02T15:23:30.760 回答
-2

是的,这是可能的。

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

于 2009-10-02T14:51:58.950 回答