将值分配给未映射的属性

时间:2012-09-27 09:29:59

标签: asp.net-mvc-3 nhibernate

假设我有一个Customer类,其中包含一些属性,如

  • 名,
  • ID
  • CompetentAuthority等的对象

name,id等映射在.hbm文件中,但我已经对CompetentAuthority对象进行了icollection,而且我没有在.hbm文件中为CompetentAuthority(一对多)做任何entery。

在CompetentAuthority类中,我使用了Customer对象,并且在CompetentAuthority的.hbm文件中,我做了多对一的关系。

Nnow,我希望客户列表中有CompetentAuthority列表,但由于它只是一个对象并且没有映射,标准API不允许我做内连接;它给我一个错误,如“无法解析属性”

有没有办法实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果您想使用Criteria API来应用INNER JOIN,那么你不能这样做。需要使用NHibernate映射CompetentAuthority对象,并且需要修改Customer对象的映射文件以建立两个实体之间的关系。

如果由于某种原因您无法映射CompetentAuthority,您可以利用混合ISession.CreateSQLQuery()方法和Transformers.AliasToBean()方法,这将允许您水合未映射的实体。

有关此技术的更多信息,请参阅标题为“返回非托管实体”的官方NHibernate文档部分,或搜索使用AliasToBean()方法:http://nhibernate.info/doc/nh/en/index.html#d0e11066