gpt4 book ai didi

nhibernate - 带有类型检查 "is"运算符的 Where 子句不使用鉴别​​器

转载 作者:行者123 更新时间:2023-12-03 18:27:16 25 4
gpt4 key购买 nike

我已经在 NHibernate 中映射了一个类层次结构。就这么简单:

class abstract Animal
class Dog : Animal
class Cat: Animal
class Cow: Animal

在映射中,我在 ANIMAL_TYPE 列上设置了鉴别器值:

Dog -> dog
Cat -> cat
Cow -> cow

所有类型的查询都有效。除了这个,当我需要获取两种特定类型的对象时。我是这样写的:

QueryOver.Of<Animal>().Where(animal => animal is Dog || theme is Cat)

结果我没有收到任何项目。当我查看生成的查询时,NHibernate 生成:

(this_.ANIMAL_TYPE = @p0 or this_.ANIMAL_TYPE = @p1)

很好,但是 @p0@p1 参数中的值包含完整的类名,例如。

Zoo.Model.Cat

而不是鉴别器值。我该如何解决?我是否必须使鉴别器值与类型名称保持同步?如果可能的话,我想避免它。

最佳答案

这个问题和答案应该适合你:How can QueryOver be used to filter for a specific class? (就在你前一天问过)

var query = session.QueryOver<Animal>()
.Where(animal => animal.GetType() == typeof (Dog)
|| animal.GetType() == typeof (Cat)
);

var list = query.List<Animal>();

关于nhibernate - 带有类型检查 "is"运算符的 Where 子句不使用鉴别​​器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21696481/

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