2009-08-06 17 views
0

ProductとImageの2つのクラスがあります。Fluent NHibernateの地図構成

  1. この商品の画像は1つだけです。
  2. 孤立した画像は存在しません。

この意味UMLで組成関係を表す:
割り当てProduct.Image

  1. 古い画像を削除以下でNEWIMAGE結果を、
  2. 新しい画像を挿入します。
  3. リンクをクリックすると新しい画像が表示されます。

今私は、RDBMSのテーブル(メタコード)にマッピングする必要があります。

Product (Id primary key, ImageId int references Image(id)) 
Image(Id primary key, Content) 

質問が流暢NHibernateはを使用してそれを行う方法です。
ご注意:

productMap.References(x => x.Image).Cascade.All() 

は適用されない - それは孤立した画像を削除しません。

また、NHは、多対1のためのすべての削除孤児をサポートしていません。

おそらくコンポーネントとの結合のようなものが必要です。
しかし、FLUENT NHでは、

UPDATE:FNHのユーザーグループのジェームズは、この構文を提案した:

WithTable("other table", m => 
{ 
    m.Component(...); 
}); 

しかし、それと運:非サポート例外:廃止された
それはFNHのV1(upcomming)で働くことになって。

答えて

1

コンポーネントのようにマップできますか?流暢で

マッピング:http://wiki.fluentnhibernate.org/show/StandardMappingComponents

NHドキュメント:http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-component

+0

うん。私はおそらくコンポーネントが必要ですが、それは別のテーブルにある必要があります。 おそらく、* join *を* component *と組み合わせる必要があります。 FNHを使ってどのようにこれを行うことができないのか分かりません。 –