给出的表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
有没有可能?
谢谢。
答案 0 :(得分:2)
检查NH 5.0的最新功能
17.5. Join entities without association (Entity joins or ad hoc joins)
小引用:
在QueryOver中,您可以定义到任何实体的联接,而不是 只是通过映射的关联。为此,请使用JoinEntityAlias 和JoinEntityQueryOver。例如:
test2