2010-11-18 4 views
5

私は現在、次のようにコンポーネントマップを使用しています:私は一つだけの場所で部品/値オブジェクトのマッピングを定義する必要がbecuaseFluent Nhibernate - コンポーネント(値オブジェクト)のコレクションをマッピングしますか?

public class UserMapping 
{ 
     public UserMapping() 
     { 
      Id(c => c.Id).GeneratedBy.HiLo("100"); 
      Map(c => c.UserName); 
      Component(c => c.Country, CountryComponentMapping.Map); 
     } 
} 


public sealed class CountryComponentMapping 
{ 
    public static void Map(ComponentPart<Country> part) 
    { 
     part.Map(x => x.CountryName) 
     part.Map(x => x.CountryAlpha2) 
    } 
} 

私はこれが好きです。

コンポーネントのコレクションに対して同じセマンティクスを使用するにはどうすればよいですか?(例:これをユーザーエンティティの国のコレクションに変更すると仮定してください)

+0

コンポーネントは、住所は、お客様の構成要素であるが、それはCustomer_City、Customer_ZIPなど –

答えて

7

これをコンポーネントコレクションとしてマップできます。残念ながら、HasMany()にオーバーロードはありません。ComponentMapの派生クラスを使用することを指定できるFluent NHibernateのComponent()。あなたは上記のあなたのテクニックの修正を使用することができます。

public sealed class UserMap : ClassMap<User> { 
    public UserMap() { 
     Id(c => c.Id).GeneratedBy.HiLo("100"); 
     Map(x => x.Name); 
     HasMany(x => x.Countries).Component(CountryComponentMapping.Map); 
    } 
} 

public sealed class CountryComponentMapping { 
    public static void Map(CompositeElementBuilder<Country> part) { 
     part.Map(x => x.CountryName); 
     part.Map(x => x.CountryAlpha2) 
    } 
} 
+0

として住んでいるテーブルはこの答えは今も5歳以上で流暢ドキュメ​​ントに基本的な例を考えて、親エンティティの一部であります。その間に何か変わったことはありますか? – MarioDS

関連する問題