gpt4 book ai didi

c# - 使用 NHibernate.Linq 按子类型过滤实体

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:32 26 4
gpt4 key购买 nike

鉴于此继承映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="User" table="[User]" abstract="true">
<joined-subclass name="SubUser1" table="SubUser1">
<key column="UserId" />
...
</joined-subclass>
<joined-subclass name="SubUser2" table="SubUser2">
<key column="UserId" />
...
</joined-subclass>
<joined-subclass name="SubUser3" table="SubUser3">
<key column="UserId" />
...
</joined-subclass>
</class>
</hibernate-mapping>

如何查询 SubUser2SubUser3 的所有实例?我意识到我可以做到这一点:

session.Linq<User>().OfType<SubUser2>()

但这只允许我按单一类型进行过滤。我试过这个:

session.Linq<User>().Where(user => user is SubUser2)

但这导致了这个错误:

could not resolve property:  of: User

关于如何表达针对多个子类型的查询有什么想法吗?

最佳答案

据我所知,这是不可能的。也许它会在未来。我知道他们接受补丁 :-)

我只有大约 500 条记录和 4 种类型,并且通常同时查询 2 或 3 种类型。现在,我对数据库中的每种类型应用过滤器,然后连接结果集并在内存中进行排序和分页。

这不是最有效的解决方案,但效果很好。我选择不向 User 表添加多余的鉴别器列只是为了启用此查询。

关于c# - 使用 NHibernate.Linq 按子类型过滤实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236501/

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