問題を正確に説明しようとします。
(コレクション)と1 対多の関係をA
持つエンティティがあります。B
また、エンティティB
はエンティティmany-to-many
と関係がありますC
。
タイプ の一時オブジェクトを最初に保存すると、と関連付けられた関連する一時エンティティ インスタンスA
の両方がデータベースに正しく作成されますが、 に関連付けられた一時インスタンスは作成されません。A
B
A
C
B
多対多の関連付けは、関連付けの両側で次のようにマッピングされます (コードによるマッピング アプローチ)。
// Mapping for collection of Entity C on Entity B
@class.Set
(
entityB => entityB.EntityCList,
map =>
{
map.Table("EntitiesBInEntitiesC");
map.Cascade(Cascade.All);
map.Key(key => key.Column("EntityBId"));
map.Inverse(false);
},
map => map.ManyToMany(relMap => relMap.Column("EntityCId"))
);
// Mapping for collection of Entity B on Entity C
@class.Set
(
entityB => entityB.EntityBList,
map =>
{
map.Table("EntitiesBInEntitiesC");
map.Cascade(Cascade.All);
map.Key(key => key.Column("EntityCId"));
map.Inverse(true);
},
map => map.ManyToMany(relMap => relMap.Column("EntityBId"))
);
また、両方ともまだ一時的なオブジェクトであるエンティティB
とエンティティがインスタンス化されると、エンティティのコレクションにエンティティの 1 つを追加し、その逆も行います。C
B
C
最後に、トランザクションは正常に終了します。これは、エンティティA
とB
、およびそれらの関連付けが期待どおりにデータベースに格納されていることを意味します。
エンティティのC
関連付けがデータベースに保持されないのはなぜですか? 私は何を間違っていますか?
注: NHibernate 3.x シリーズの最新バージョンを使用しています。
注 2: SQL Server データベースのプロファイルを作成したところ、m:n テーブルへの挿入は実行されません。