我正在使用Nhibernate,并且在获取具有多个派生类的基类时遇到问题(每个类映射不同的表)。当我看到这个请求时,Nhibernate加入了每个派生表,这对表现产生了巨大的影响......
以下是我课程的简化视图:
public class Animal{
public virtual int ID { get; set;}
public virtual string Name { get; set;}
}
public class Dog : Animal{
//others properties
}
public class Cat: Animal{
//others properties
}
public class Person{
public virtual int ID { get; set;}
public virtual IEnumerable<Animal> Animals { get; set;}
}
一个人有动物名单,我只想要他们的名字。这个例子并不完美,而且更复杂(银行业务),但它反映了我的问题。 我知道它可以以不同的方式完成,但它是遗产,所以我没有选择......
提前致谢。
答案 0 :(得分:1)
IMO NHibernate只会连接包含投影列的表。定义一个查询,但不返回Person
,而是将你需要的属性投射到dto / anonymous类
答案 1 :(得分:0)
毕竟,我创建了一个由Dog,Cat等继承的AnimalBase类和一个没有任何子节点的Animal类(都有接口IAnimal)。
在95%的请求中,我只需要Animal,我在像Person这样的其他对象中引用这个类。
不完美,但我找不到更好的东西......
感谢Firo的帮助。