Mysql NHibernate+QueryOver:如何通过ID连接未映射的实体?
给定的是表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 有可能吗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 有可能吗 谢谢
谢谢。查看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();
可能重复的