Asp.net mvc 3 将值指定给未映射属性

Asp.net mvc 3 将值指定给未映射属性,asp.net-mvc-3,nhibernate,Asp.net Mvc 3,Nhibernate,假设我有一个Customer类,它具有如下属性 名字 身份证 权限级别等的对象 名称、id等映射到.hbm文件中,但我已获取CompetentAuthority对象的icollection,并且我没有在.hbm文件中输入CompetentAuthority(一对多) 在CompetentAuthority类中,我使用了Customer对象,在CompetentAuthority的.hbm文件中,我使用了多对一关系 现在,我想要一份客户名单,上面有它的CompetentAuthority列表,

假设我有一个Customer类,它具有如下属性

  • 名字
  • 身份证
  • 权限级别等的对象
名称、id等映射到.hbm文件中,但我已获取CompetentAuthority对象的icollection,并且我没有在.hbm文件中输入CompetentAuthority(一对多)

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

现在,我想要一份客户名单,上面有它的CompetentAuthority列表,但由于它只是一个对象,没有映射,CriteriaAPI不允许我做innerjoin;它给我类似“无法解析属性”的错误


有什么方法可以实现这一点。

如果您想使用Criteria API应用内部联接,那么您不能这样做。CompetentAuthority对象需要与NHibernate映射,客户对象的映射文件需要修改以建立两个实体之间的关系

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


有关此技术的更多信息,请参阅名为“返回非托管实体”的官方NHibernate文档部分,或搜索使用AliasToBean()方法:

hey Randy,谢谢您的回复,此解决方案对我有效:)但CreateSQLQuery()适用于SQL数据库,对吗?如果DB在Oracal或mysql中,它将不起作用,对吗?如果是,那么我可以用任何其他方法来做。CreateSQLQuery()将适用于NHibernate支持的所有数据库。