0

2 つのクラスを 1 つのデータベース エンティティに自動マッピングする方法は?

public abstract class Root
{
        public virtual int Id { get; set; }
        public virtual string Item { get; set;}
}

public class First
{
        public override string ToString()
        {
                return "First " + Id;
        }
}

public class Second
{
        public override string ToString()
        {
                return "Second " + Id;
        }
}

このコードは、データベースに 2 つのエンティティを生成します。

4

1 に答える 1

1

Fluent NHibernateのドキュメントでは、それについてよく説明されています。最初のステップは、拡張クラスを基本クラスから継承させることです。

public class First : Root

基本クラスは抽象クラスであるため、FNH に具象クラスとしてマップしないように指示します。

AutoMap.AssemblyOf<Entity>(cfg).IgnoreBase<Entity>();

FNH は、デフォルトで table-per-subclass マッピング戦略を使用します。階層ごとのテーブル マッピング (これをお勧めします) を使用する場合は、IsDiscriminated メソッドをオーバーライドします。

public override bool IsDiscriminated(Type type)
{
   return true;
}
于 2013-01-05T14:31:21.427 に答える