gpt4 book ai didi

mysql - NHibernate + 查询结束 : How to join unmapped entity by ID?

转载 作者:行者123 更新时间:2023-11-29 05:50:53 26 4
gpt4 key购买 nike

给定的表 A 包含列 EntityType(指定类型 B 的实体/表或类型 C 的实体/表的枚举)和 EntityID(表 B 或表 C 中条目的 ID)。

B 类和 C 类都实现了 IBC 接口(interface),A 类有一个属性 IBC。

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

我想用 NHibernate QueryOver 做这个查询,这样就不会再有额外的查询:

从A中选择*left join B b on b.ID = a.EntityIDleft join C c on c.ID = a.EntityID

有可能吗?

谢谢。

最佳答案

查看NH 5.0最新功能

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

小引用:

In QueryOver you have the ability to define a join to any entity, not just through a mapped association. To achieve it, use JoinEntityAlias and JoinEntityQueryOver. By example:

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();

关于mysql - NHibernate + 查询结束 : How to join unmapped entity by ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54416242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com