मुझे कोड फर्स्ट का उपयोग करके रिश्तों को कैसे परिभाषित करना चाहिए, लेकिन किसी भी नेविगेशन गुणों का उपयोग किए बिना?ईएफ 4 कोड पहला: नेविगेशन प्रॉपर्टी को जोड़ने के बिना रिलेशनशिप कैसे जोड़ें
पहले मैंने रिश्ते के दोनों सिरों में नेविगेशन गुणों का उपयोग करके वन-वन और कई-कई परिभाषित किए हैं। और डेटाबेस में उचित संबंध बनाए जाते हैं। यहां कक्षाओं की तरह दिखने का एक संक्षिप्त संस्करण है (मैंने सादगी के लिए कई लोगों को कई-कई रिश्तों को परिवर्तित कर दिया है)।
public class User
{
public string UserId { get; set; }
public string PasswordHash { get; set; }
public bool IsDisabled { get; set; }
public DateTime AccessExpiryDate { get; set; }
public bool MustChangePassword { get; set; }
public virtual Role Role { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Right> Rights { get; set; }
}
public class Right
{
public Guid RightId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual Role Role { get; set; }
}
हालांकि, अगर मैं नेविगेशन गुणों को हटा देता हूं, तो कोई संबंध नहीं बनाया जा रहा है। यहां बताया गया है कि कक्षाएं कैसी दिखेंगी।
public class User
{
public string UserId { get; set; }
public string PasswordHash { get; set; }
public bool IsDisabled { get; set; }
public DateTime AccessExpiryDate { get; set; }
public bool MustChangePassword { get; set; }
public int Role RoleId { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class Right
{
public Guid RightId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int RoleId { get; set; }
}
ध्यान दें कि एक नेविगेशन संपत्ति के बजाय, मेरे पास संबंधित तालिका की प्राथमिक कुंजी है। सब कुछ टेबल पर बनाया जाता है - रिश्ते को छोड़कर। तो मैं यह करने के बारे में कैसे मिलता हूं?
बीटीडब्लू, मैंने डीबीकॉनटेक्स्ट की ऑनमोडेल क्रिएटिंग विधि में विभिन्न संयोजनों की कोशिश की है लेकिन इसका कोई फायदा नहीं हुआ है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है!
धन्यवाद, मेल
मुझे बहुत संदेह है। उदाहरण के लिए धन्यवाद। मैंने विदेशी कुंजी के साथ नेविगेशन गुणों का उपयोग करने का प्रयास किया है लेकिन विदेशी कुंजी पॉप्युलेट नहीं है, लेकिन ऐसा लगता है कि उत्तर आपके उदाहरण में है। धन्यवाद! – Mel
यदि वास्तविक वस्तु के लिए कोई संपत्ति मौजूद है तो क्या आपको आईडी गुणों को परिभाषित करने की आवश्यकता होगी? तो उपयोगकर्ता ऑब्जेक्ट में आपको RoleId को परिभाषित करने की आवश्यकता होगी या यह केवल सुविधा के लिए है? – DDiVita
@ डीडीवीटा: यदि आप 'उपयोगकर्ता' में 'RoleId' परिभाषित करते हैं या नहीं तो यह एक बड़ा अंतर है। मैं एक अंतर देखने के लिए इस उत्तर की अनुशंसा करता हूं: http://stackoverflow.com/questions/5281974/code-first-independent-associations-vs-foreign-key-associations/5282275#5282275 –