免責事項:私は一般的にNH & ORMをかなり新しくしています。オプションNHibernate 3.0 GA&FNHのSubclassMap(left join)
免責事項:NH3.0GAで使用するには、hereのFNHビルドで作業しています。
public class MyBaseClass {
public virtual int Id { get; set; }
}
public class MySubClass : MyBaseClass {
public virtual string SubClassVal { get; set; }
}
この:
一言で言えば、問題は、私は、テーブルあたりのサブクラスのシナリオのように定義された私のオブジェクト階層に、JOINをLEFTをマッピングする方法として、FNHのSubclassMap
を使用したいということですFNHを経由してマッピングされます。
public class MyBaseClassMap : ClassMap<MyBaseClass> {
public MyBaseClassMap() {
Table("BaseClass");
Id(x => x.Id, "Id").GeneratedBy.Assigned();
}
}
public class MySubClassMap : SubclassMap<MySubClass> {
public MySubClassMap() {
Table("SubClass");
KeyColumn("Id");
Map(x => x.SubClassVal);
}
}
そして私は経由で取得:
public class Repository {
ISession session; //assume properly initialized ISession
public IList<T> GetAll<T>() where T: class {
return session.CreateCriteria<T>().List<T>();
}
}
そして私のデータベースでは、BaseClass
テーブルに1レコード、に0レコードがあります。
は、私がやりたいことは、このような何かを行うことによってMySubClass
インスタンスとして実体を引き出すです:
var rep = new Repository();
var subclasses = rep.GetAll<MySubClass>();
そして、これがおそらくあるとして当然のことながら、返されるコレクションにはインスタンスが存在しませんそれの下にインナー・ジョインを実行します。これは私が立ち往生している場所です。私は、「オプションの」結合を指定することは、私がと考えているものであることを発見した。以下の(最も内側の)例外で私を提示し、これを実行している/コンパイル
public class MySubClassMap : SubclassMap<MySubClass> {
public MySubClassMap() {
Join("SubClass", j => {
j.KeyColumn("Id");
j.Optional();
j.Map(x => x.SubClassVal); // note that I've tried the map outside the Join() below, to no avail
});
//Map(x => x.SubClassVal);
}
}
:私はにMySubClassMap
を変更しようとしてきました
要素の名前空間「壷で「サブクラスに入社」:NHibernateの-mapping- 2.2 'は名前空間' urn:nhibernate-mapping-2.2 'で無効な子要素' join 'を持っています。可能な要素のリスト: 'プロパティ、多対1、一対一、コンポーネント、動的コンポーネント、プロパティ、任意、マップ、セット、リスト、バッグ、IDBAG、配列、プリミティブ配列、結合サブクラス、loader、sql-insert、sql-update、sql-delete、resultset、query、sql-query 'をネームスペース' urn:nhibernate-mapping-2.2 'に追加します。
私は、スタックトレースを投稿節約できますが、それのJISTは次のとおりです。私は関連するすべての情報だと思い
MyApp -->
FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() -->
NHibernate.Cfg.FluentConfiguration.BuildConfiguration()
。私はNHのこの新しいバージョンとそれほど新しくないFNHのバージョンとの間の急激な変化にぶち当たっているかもしれないと思う。しかし、前に述べたように、私はルーキーであり、何かばかげたことをしている可能性があります。このような場合には、誰かが私を頭の中で叩いて、おそらく明らかになるはずのものがあると大変感謝しています。
ありがとうございます。
私は厄介だと思った。私を選別してくれてありがとう。 – Devfellow