2011-03-27 20 views
22

मैं इकाई फ्रेमवर्क 4.1 पर काम कर रहा हूं और विदेशी कुंजी के लिए डेटा एनोटेशन का उपयोग कर रहा हूं। मैं जानना चाहता हूं कि हम उत्पाद और श्रेणियों के बीच कई रिश्ते को कैसे परिभाषित कर सकते हैं। मैं श्रेणी मैप करना चाहता हूँ। product.cidइकाई ढांचे में विदेशी कुंजी 4.1

public class Category 
{ 
    public string CategoryId { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    public string CId { get; set; } 

    public virtual Category Category { get; set; } 
} 

साथ CategoryID कृपया सुझाव है

उत्तर

24

दोनों इन तरीकों से काम करना चाहिए:

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    [ForeignKey("Category")] 
    public string CId { get; set; } 

    public virtual Category Category { get; set; } 
} 

या:

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    public string CId { get; set; } 

    [ForeignKey("CId")] 
    public virtual Category Category { get; set; } 
} 

ForeignKeyAttribute नेविगेशन पीआर को जोड़ने के लिए प्रयोग किया जाता है ऑपरेटी और विदेशी कुंजी संपत्ति। इसमें या तो संबंधित नेविगेशन संपत्ति का नाम या संबंधित विदेशी कुंजी संपत्ति का नाम शामिल है।

+0

@ लाडस्लावेव [विदेशीकी ("श्रेणी आईडी")] उत्पाद के अंदर नहीं होगा? – DotnetSparrow

+0

@ कोई भी क्या कोई मुझे बता सकता है कि इन दो दृष्टिकोणों के बीच कोई अंतर है? वे समान दिखते हैं लेकिन क्या ऐसी कोई चीज है जो डेवलपर को दूसरे पर एक विधि चुनने का कारण बन सकती है? – Ray

6

आप इस के लिए entityconfigurations का उपयोग करें।

entityconfiguration में, श्रेणी entityconfiguration को यह मैपिंग जोड़ें:

HasMany<Product>(x => x.Products).WithRequired().HasForeignKey(x => x.CId); 

आप केवल अपने वर्गों में से एक पर मैप करने की आवश्यकता और DbContext पर्याप्त चतुर इसका इस्तेमाल करने की है।

अधिक जानकारी के लिए यह blog post देखें।

संपादित इस डेटा एनोटेशन का उपयोग करने के लिए मेरा मानना ​​है कि सही दृष्टिकोण इस प्रकार है:

[RelatedTo(RelatedProperty="Products", Key="CId", RelatedKey="CategoryId")] 
public virtual Category Category { get; set; } 
+0

@ गेट्स: मैं डेटा एनोटेशन का उपयोग करके इसे करना चाहता हूं – DotnetSparrow

+0

@ गेट्स मैं धाराप्रवाह एपीआई – DotnetSparrow

+0

के बजाय डेटा एनोटियंस का उपयोग करके यह कैसे कर सकता हूं, मुझे लगता है कि यह है। सीटीपी 4 के बाद से एनोटेशन का इस्तेमाल नहीं किया है जो 1 संस्करण वापस है, लेकिन मुझे पूरा यकीन है कि यह सही है। – Gats

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