2012-03-18 21 views
9

私のMSSQLには、2つのテーブル、プロパティと写真があります。流暢NhibernateマッピングhasMany

これを短くするために、ここにはいくつかのフィールドだけを書きます。次のように Propertyテーブル

Id int not null 
Title nvarchar(255) not null 
PhotoId int not null 

写真テーブル

Id int not null 
ImageData varbinary(MAX) null 
ImageMimeType varchar(50) null 

関係は次のとおりです。

FK_Property_Photo

Primary Key table  Foreign key table 
-------------------------------------------- 
Photo     Property 
-------------------------------------------- 
Id      PhotoId 

あなたは一つの特性は、1つまたは多くの画像を持つことができます想像できるように。 1つのイメージは、1つまたはmenyプロパティに属することができます。

私はあなたがReferences and HasMany団体を利用したいマッピング

public PropertyMap() 
{ 
    Table("Property"); 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => x.Title).Length(255).Not.Nullable(); 
    HasMany(x => x.Photos).KeyColumn("Id"); 
} 

public PhotoMap() 
{ 
    Table("Photo"); 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => x.Version); 
    Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000); 
    Map(x => x.ImageMimeType); 
} 
+1

'fluent-nhibernate'というタグを追加する必要があります。 – dwerner

+0

アソシエーションをどちら側に表示したいですか?私は流暢なドキュメントを見ていきます。私は自分自身のXMLマッピングを好みます:S。 – dwerner

+0

複数の写真を1つのプロパティに関連付けるにはどうすればいいですか?あなたが言及していない 'リンク'テーブルはありますか? –

答えて

12

のこの種で試してみました。他の関連付けを取得するには既にHasManyを使用しています。

public PropertyMap() 
{ 
    Table("Property"); 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => x.Title).Length(255).Not.Nullable(); 
    HasMany(x => x.Photos).KeyColumn("Id"); // you were already doing this 
} 

public PhotoMap() 
{ 
    Table("Photo"); 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => x.Version); 
    Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000); 
    Map(x => x.ImageMimeType); 
    References(x => x.Property) // you'll need 'Property' in your class definition too 
     .Column('PhotoId') 
     .Cascade.All(); 
} 
+0

いい仕事、ありがとうございました – BobRock

+0

よろしくお願いします。今私はそれらを見るときに流暢なマッピングを理解するかもしれません。 :) – dwerner

関連する問題