NHibernate + QueryOver:如何通过ID加入未映射的实体?

时间:2019-01-29 07:55:01

标签: mysql nhibernate queryover

给出的表A具有EntityType列(用于指定B类型的Entity / Table或C类型的Entity / Table的枚举)和EntityID(表B或表C中的条目的ID)。

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

这有效,但是当我有一个A并访问属性IBC时,它将再执行一次查询以选择表B或C的行。如果我有很多A,它将进行很多查询。

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

从A a选择* 在b.ID = a.EntityID上左连接B b 在c.ID = a.EntityID上左联接C c

有没有可能?

谢谢。

1 个答案:

答案 0 :(得分:2)

检查NH 5.0的最新功能

17.5. Join entities without association (Entity joins or ad hoc joins)

小引用:

  

在QueryOver中,您可以定义到任何实体的联接,而不是   只是通过映射的关联。为此,请使用JoinEntityAlias   和JoinEntityQueryOver。例如:

test2