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/anonymous クラスに投影します

于 2012-11-29T12:56:52.557 に答える
1

結局のところ、Dog、Cat などに継承されるクラス AnimalBase と、子を持たないクラス Animal (どちらもインターフェイス IAnimal を持つ) を作成しました。

私の要求の 95% と同様に、必要なのは Animal だけです。Person などの他のオブジェクトでこのクラスを参照します。

完璧ではありませんが、より良いものは見つかりませんでした...

助けてくれてありがとうフィーロ。

于 2012-11-30T14:29:07.587 に答える