मैं ईएफ कोड फर्स्ट के साथ मौजूदा डेटाबेस में वैकल्पिक 1-से-1 संबंध मैप करना चाहता हूं।ईएफ कोड प्रथम - 1-से-1 वैकल्पिक संबंध
सरल स्कीमा:
User
Username
ContactID
Contact
ID
Name
जाहिर ContactID Contact.ID को मिलती है। ContactID फ़ील्ड शून्य है इसलिए संबंध वैकल्पिक है - 0 या 1, कभी भी कई नहीं।
तो मैं इस मौजूदा स्कीमा के साथ ईएफ कोड फर्स्ट में इस संबंध को कैसे निर्दिष्ट करूं?
public class User
{
[Key]
public string Username { get; set; }
public int? ContactID { get; set; }
[ForeignKey("ContactID")]
public virtual Contact Contact { get; set; }
}
public class Contact
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual User User { get; set; }
}
modelBuilder.Entity<User>().HasOptional<Contact>(u=> u.Contact)
.WithOptionalDependent(c => c.User);
मैं निम्न अपवाद प्राप्त:
यहाँ मैं अब तक की कोशिश की है है
System.Data.Edm.EdmAssociationEnd: : Multiplicity is not valid in Role
'User_Contact_Source' in relationship 'User_Contact'. Because the Dependent
Role properties are not the key properties, the upper bound of the multiplicity
of the Dependent Role must be *.
इससे मुझे 0: 1 से 0: 1 को कॉन्फ़िगर करने का प्रयास करते समय निम्न को हल करने में मदद मिली - इस एसोसिएशन का मूल अंत स्पष्ट रूप से रिलेशनशिप फ्लिप एपीआई या डेटा एनोटेशन का उपयोग करके कॉन्फ़िगर किया जाना चाहिए। –
मैं आपको सलाह देता हूं कि आप सम्मेलन के अनुसार विदेशी कुंजी संपत्ति शामिल करें (https://msdn.microsoft.com/en-us/data/jj679962)। यदि भी आप संस्थाओं के बीच रिश्ते बनाते हैं, तो इसे इकाई की संपत्ति के बजाय इस महत्वपूर्ण संपत्ति के माध्यम से करें। मुझे इस तरह से कुछ अपवाद प्राप्त होने की संभावना कम है जैसे ऑब्जेक्ट स्टेट मैनेजर में डुप्लिकेट कुंजियां और अपडेट गलत होने पर अधिक सार्थक अपवाद। – MIP1983
मैं 'उपयोगकर्ता 'में' ContactId' फ़ील्ड का उपयोग कैसे कर सकता हूं? यदि मैं उपरोक्त कोड का उपयोग करता हूं और उपयोगकर्ता में 'ContactId' फ़ील्ड को परिभाषित करता हूं तो यह मुझे एक त्रुटि देता है कि यह एक डुप्लिकेट संपत्ति है। मैं इकाई ढांचे को कैसे बता सकता हूं कि 'MapKey' के साथ परिभाषित कॉलम और उपयोगकर्ता में परिभाषित' ContactId' समान है। –