0

次のようなクラス階層をマップしようとしています。

public abstract class A { }
public class B : A { }
public class C : A { }

クラスAは抽象的であるため、マップしたくありません。できることはわかっています。

.IgnoreBase<A>()

Aをマップせず、AのすべてのプロパティをBとCにマップします。しかし、私の問題は、次のような別のクラスDもあるということです。

public class D {
  public virtual A a { get; set; }
}

ここで、流暢な nhibernate 自動マッピング機能を使用してマッピングしようとすると、クラス D がマッピングされていないクラス A を参照しているというエラーが表示されますが、クラス A は実際にはサブクラス B および C を介してマッピングされます。

誰でもこれを解決する方法を知っていますか?

4

1 に答える 1

3

クラスAをマップしない場合、クラスBとCはサブクラスになりません。これらは、まったく接続されていない2つのクラスにすぎません。NHibernateはクラスAについて何も知らないので、NHibernateはクラスAへの参照を処理する方法をどのように知る必要がありますか?

抽象的であるためAをマッピングしないのは理由がありません。インターフェイスをマッピングすることもできます。

DBモデル(テーブル)を見せていただければ、何をしたいのかがより明確になるかもしれません。

于 2011-11-02T08:20:15.727 に答える