NHibernate有很多对很多的向后查询

时间:2011-07-28 19:06:21

标签: nhibernate nhibernate-mapping

这是一个问题,不知道你的主题,但我有搜索dlong和硬,所以我希望这不会太痛苦。

我正在使用nhibernate进行多对多查询。

我的对象映射(不是我的设计,不会很快改变):

计算机(身份证,姓名等) - > (映射表) - >配置(id,key,value)

一台计算机可能有许多配置,任何配置可能属于多台计算机。我可以把电脑看得很好,列表(包)成员就可以了。

然后我想找一台有很多配置的电脑。

E.g。所有计算机: 操作系统:Windows CPU:2GHz 等

我将非常感谢有关如何将其纳入标准查询的任何帮助。我已经完成了一些基础知识,但是围绕这个问题很难实现。

欢呼任何协助, 罗布。

1 个答案:

答案 0 :(得分:1)

如果参数始终相同,请使用如下查询:

var computers = session.CreateQuery(
    @"select c
    from Computer c
      inner join c.Configurations as osconfig
      inner join c.Configurations as cpuconfig
    where
      osconfig.Name = 'OS' 
      and osconfig.Value = :os
      and cpuconfig.Name = 'CPU' 
      and cpuconfig.Value = :cpu")
  .SetString("os", "Windows")
  .SetString("cpu", "2GHz")
  .List<Computer>();

如果您将其映射为地图,您甚至可以执行以下操作:

var computers = session.CreateQuery(
    @"select c
    from Computer c
    where
      c.Configurations['OS'] = :os
      and c.Configurations['CPU'] = :cpu")
  .SetString("os", "Windows")
  .SetString("cpu", "2GHz")
  .List<Computer>();

如果参数始终不同,请使用条件动态添加它们。