Fluent NHibernate(リリース524)のJoinedSubClassPartを使用して、継承したクラスのモデリングに問題があるようです。私が使用しているアプローチは、(下記参照)動作する必要があることを示す他の記事を見てきました、まだ実行時に私は(JoinedSubClassPartのImappingPart.PositionOnDocumentメソッドによってスローされた)次の例外を取得:Fluent NHibernateのJoinedSubClassPartに関する問題
XunitException:FluentNHibernate.Cfg.FluentConfigurationExceptionを:SessionFactoryの作成中に無効または不完全な設定が使用されました。 PotentialReasonsコレクションをチェックし、詳細についてはInnerExceptionをチェックしてください。
---- System.InvalidOperationException:配列の2つの要素の比較に失敗しました。 -------- System.NotSupportedException:廃止されました
これは実際には機能するのでしょうか、これは別のアプローチを支持して廃止されましたか?
私は、AddPart()を使ってサブクラスのマッピングを動的に追加できるという考え方のように、私は単に間違ったことをやりたいのです。
ご協力いただきますようお願い申し上げます。
public class MyBaseClass
{
public int Id { get; set; }
public string CommonProperty { get; set; }
}
public class MySubClass1 : MyBaseClass
{
public string MySubClass1Property { get; set; }
}
public class MySubClass2 : MyBaseClass
{
public string MySubClass2Property { get; set; }
}
そして、次のように私のマッピングは、次のとおりです:次のように
私のオブジェクトモデル(まだ失敗)の簡易版である
public class MyBaseClassMap : ClassMap<MyBaseClass>
{
public MyBaseClassMap()
{
Not.LazyLoad();
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.CommonProperty);
AddPart(new MySubClass1Map());
AddPart(new MySubClass2Map());
}
}
public class MySubClass1Map : JoinedSubClassPart<MySubClass1>
{
public MySubClass1Map()
: base("MyBaseClassId")
{
Not.LazyLoad();
Map(x => x.MySubClass1Property);
}
}
public class MySubClass2Map : JoinedSubClassPart<MySubClass2>
{
public MySubClass2Map()
: base("MyBaseClassId")
{
Not.LazyLoad();
Map(x => x.MySubClass2Property);
}
}