2012-03-18 17 views
9

मेरे एमएसएसक्यूएल में मेरे पास दो टेबल, संपत्ति और फोटो हैं।फ्लुएंट निबर्ननेट मैपिंग में कई

इसे छोटा करने के लिए मैं यहां कुछ फ़ील्ड लिखूंगा। संपत्ति तालिका

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 

आप एक संपत्ति कल्पना कर सकते हैं एक या कई छवियों हो सकता है। एक छवि एक या मैनी गुणों से संबंधित हो सकती है।

मैं मानचित्रण

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

आपको टैग 'फ्लेंट-निबर्ननेट', प्लज़ जोड़ना चाहिए। – dwerner

+0

आप किस पक्ष को एसोसिएशन दिखाना चाहते हैं? मैं धाराप्रवाह दस्तावेज़ों पर एक नज़र डालेगा, मैं खुद को एक्सएमएल मैपिंग पसंद करता हूं: एस। – dwerner

+0

आप एक से अधिक संपत्तियों को एक संपत्ति के साथ कैसे जोड़ते हैं? क्या कोई 'लिंक' टेबल है जिसका आपने उल्लेख नहीं किया है? –

उत्तर

12

इस तरह आप 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"); // 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

संबंधित मुद्दे