0

我正在使用 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;}
}

一个人有一个动物列表,我只想要他们的名字。这个例子并不完美,而且更复杂(银行程序),但它很好地反映了我的问题。我知道它可以以不同的方式完成等等,但它是一个遗产,所以我别无选择......

提前致谢。

4

2 回答 2

1

IMO NHibernate 只会连接包含投影列的表。定义查询但不返回Person但将您需要的属性投影到 dto/匿名类

于 2012-11-29T12:56:52.557 回答
1

毕竟,我创建了一个由 Dog、Cat 等继承的类 AnimalBase 和一个没有任何子级的 Animal 类(两者都有接口 IAnimal)。

在我 95% 的请求中,我只需要 Animal,我在我的其他对象(如 Person)中引用了这个类。

不完美,但我没有找到更好的东西......

感谢菲罗的帮助。

于 2012-11-30T14:29:07.587 回答