我有一个对象用户,它可以有多个帖子。
例子:
在帖子上使用延迟加载加载用户IList<User> users = User.LoadAll()
然后我只想读取“一半”的users[2].Posts[3]
(仅从该帖子对象中检索我想要的属性而不是所有属性),这可能吗?
(注意,我不想使用视图)。
编辑:有人可以给我一个简单的示例代码吗?我试图找到一个没有成功。谢谢
我有一个对象用户,它可以有多个帖子。
例子:
在帖子上使用延迟加载加载用户IList<User> users = User.LoadAll()
然后我只想读取“一半”的users[2].Posts[3]
(仅从该帖子对象中检索我想要的属性而不是所有属性),这可能吗?
(注意,我不想使用视图)。
编辑:有人可以给我一个简单的示例代码吗?我试图找到一个没有成功。谢谢
如果我很好地理解了您的问题-您想获取一个对象-在您的情况下发布-但只有其中一些属性-例如 Post.Annotation 而不是 Post.Content 两者都是字符串。
目前这是不可能的。从数据库中检索到的每个对象都将具有其所有属性,这些属性既不是关系也不是加载的集合。
你可以做一个解决方法:
通过将大属性转换为单独的实体,然后进行多对一映射并利用延迟加载
通过创建自定义查询,无论是 HQL 还是带有预测的标准(基本上只有几列)。然而,这不会返回完整的对象。
希望我的问题是正确的...
当然。
你只需要在'User' 类上声明一个集合类型的额外属性(例如'map'),将其'lazy' 属性设置为false 并将'where' 属性设置为所需的SQL-where 子句。
是的,这是可能的。
当 NHibernate 从数据库中重构一个对象时,它也可以重构该对象的所有成员,从而创建一个完整的对象图。这称为cascading,它是映射文件中定义的关联的属性,并且是您不想要的声音。有关更多信息,请参阅文档。