Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql NHibernate+QueryOver:如何通过ID连接未映射的实体?_Mysql_Nhibernate_Queryover - Fatal编程技术网

Mysql NHibernate+QueryOver:如何通过ID连接未映射的实体?

Mysql NHibernate+QueryOver:如何通过ID连接未映射的实体?,mysql,nhibernate,queryover,Mysql,Nhibernate,Queryover,给定的是表A,列EntityType Enum指定了类型B的实体/表或类型C的实体/表以及表B或表C中某个条目的EntityID 类B和C都实现接口IBC,类A具有属性IBC 这是可行的,但当我有一个A和access属性IBC时,它将执行一个查询来选择表B或表C的行。如果我有很多A,它将执行很多查询 我想使用NHibernate QueryOver执行此查询,以便不再有其他查询: 从A中选择* 在B.ID=a.EntityID上左连接B C.ID=a.EntityID上的左连接C 有可能吗 谢谢

给定的是表A,列EntityType Enum指定了类型B的实体/表或类型C的实体/表以及表B或表C中某个条目的EntityID

类B和C都实现接口IBC,类A具有属性IBC

这是可行的,但当我有一个A和access属性IBC时,它将执行一个查询来选择表B或表C的行。如果我有很多A,它将执行很多查询

我想使用NHibernate QueryOver执行此查询,以便不再有其他查询:

从A中选择* 在B.ID=a.EntityID上左连接B C.ID=a.EntityID上的左连接C

有可能吗


谢谢。

查看NH 5.0的最新功能

小引用:

在QueryOver中,您可以定义到任何实体的联接,而不是 只是通过一个映射的关联。要实现此功能,请使用JoinEntityAlias 和JoinEntityQueryOver。举例来说:

Cat cat = null;
Cat joinedCat = null;

var uniquelyNamedCats = sess.QueryOver<Cat>(() => cat)
    .JoinEntityAlias(
        () => joinedCat,
        () => cat.Name == joinedCat.Name && cat.Id != joinedCat.Id,
        JoinType.LeftOuterJoin)
    .Where(() => joinedCat.Id == null)
    .List();
可能重复的