【问题标题】:How to perform a Join using Icriteria nhibernate如何使用 Icriteria nhibernate 执行连接
【发布时间】:2012-04-23 18:08:16
【问题描述】:

我正在使用 nhibernate 在 MVC3 中开发一个应用程序来触发数据库查询。

我有两个模型。 爱好大师 爱好详情

HobbyMaster 类包含:

HobbyId
and other details

HobbyDetail 类包含:

HobbyDetaild
HobbyMasters hobbymaster
other detals

现在我想使用 Icrteria 在两个表之间执行 jon:

ICriteria criteria = session.CreateCriteria<HobbyDetail>()
                    .CreateAlias("HobbyMasters", "HobbyMasters")
                    .Add(Restrictions.EqProperty("HobbyMasters.HobbyId", "HobbyDetail.hobbymaster.HobbyId"));

还有这个:

 HobbyDetail = session.CreateCriteria(typeof(HobbyDetail))
               .CreateAlias("HobbyMasters", "HobbyMasters", NHibernate.SqlCommand.JoinType.InnerJoin)
              .Add(Restrictions.EqProperty("HobbyMasters.hobbymaster.HobbyId", "HobbyDetail.HobbyId"))

但我收到一条错误消息 无法解析 HobbyDetail 类的属性 HobbyMaster

请帮帮我

【问题讨论】:

  • fyi,这个问题与 MVC 无关。

标签: nhibernate icriteria


【解决方案1】:

您可以使用 QueryOver,它是带有 Lambda 表达式的 ICriteria 包装器:

session.QueryOver<HobbyDetail>()
  .Fetch(hobbyDetail => hobbyDetail.HobbyMasters).Eager
  .TransformUsing(Transformers.DistinctRootEntity)
  .List();

【讨论】:

  • 我收到一个错误,因为 HobbyDeatil 说不能在这个范围内声明,因为它给出了不同的含义,并且对于 Transformers.DistinctRootEntity 也有一个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多