Nhibernate 带有类型检查的Where子句;是";操作员不使用鉴别器
我已经在NHibernate中映射了一个类层次结构。简单地说:Nhibernate 带有类型检查的Where子句;是";操作员不使用鉴别器,nhibernate,nhibernate-mapping,nhibernate-criteria,Nhibernate,Nhibernate Mapping,Nhibernate Criteria,我已经在NHibernate中映射了一个类层次结构。简单地说: class abstract Animal class Dog : Animal class Cat: Animal class Cow: Animal 在映射中,我在ANIMAL_TYPE列上设置了鉴别器值: Dog -> dog Cat -> cat Cow -> cow 所有类型的查询都有效。除了这个,当我需要获取两种特定类型的对象时。我写的是这样的: QueryOver.Of<Animal>
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)
这很好,但是@p0和@p1参数中的值包含完整的类名,例如
Zoo.Model.Cat
而不是鉴别器值。我怎样才能解决它?是否必须使鉴别器值与类型名称保持同步?如果可能的话,我想避免这个问题。这个问题和答案应该适合你:(在你之前一天问)
var query=session.QueryOver()
.Where(animal=>animal.GetType()==typeof(Dog)
||animal.GetType()==typeof(Cat)
);
var list=query.list();
Zoo.Model.Cat
var query = session.QueryOver<Animal>()
.Where(animal => animal.GetType() == typeof (Dog)
|| animal.GetType() == typeof (Cat)
);
var list = query.List<Animal>();