c# - Configuring multiple 1 to 0..1 relationships between tables entity framework -


आज के पहले पोस्टों से निम्नलिखित:

< P> मैं अब निम्न संबंधों को कॉन्फ़िगर करने की कोशिश कर रहा हूं:

मद 1 के पास वैकल्पिक रॉडटा मद 2 है वैकल्पिक रॉडटा मद 3 में वैकल्पिक रॉडाटा है

रॉडटा को मद 1, मद 2 या मद 3 - यह अपने आप से मौजूद होने की उम्मीद नहीं होगी।

वर्तमान संरचना है:

  वर्ग itemx {[कुंजी] सार्वजनिक इंट आईडी {प्राप्त; सेट; } सार्वजनिक int? RawDataId {get; सेट; } [विदेशी के ("रॉडटाइड")] सार्वजनिक वर्चुअल रॉडटा रॉडेटा {प्राप्त; सेट; }} सार्वजनिक वर्ग RawData {[Key] [DatabaseGeneratedAttribute (DatabaseGeneratedOption.Identity)] सार्वजनिक int आईडी {get; सेट; } // अन्य गुण}  

मैंने सोचा था कि इसका उपयोग करके कॉन्फ़िगर किया जा सकता है:

  modelbuilder.Entity & lt; Item1 & gt ; ()। HasOptional (d = & gt; डी। रावडाटा) .ऑफ़ास्टल प्रिंसिपल ()। विलकसाडेऑनडेलेट (सच); ModelBuilder.Entity & lt; Item2 & gt; ()। HasOptional (d = & gt; डी। रावडाटा) .ऑप्टिकल प्रिंसिपल के साथ। WillCascadeOnDelete (सत्य); ModelBuilder.Entity & lt; आइटम 3 & gt; ()। HasOptional (d = & gt; डी। रावडाटा) .ऑप्टिकल प्रिंसिपल के साथ। WillCascadeOnDelete (सच);  

लेकिन इसने निम्नलिखित त्रुटि दी:

संपत्ति पर 'विदेश डेटा प्रदाता' 'मद 1' पर 'रॉडेटा' मान्य नहीं है। 'रॉडटाइड' पर आधारित विदेशी नाम 'रॉडटा' पर निर्भर नहीं था।

यह वही त्रुटि है जो मैं आज के एक पोस्ट में काम कर रहा था उस एक में मैं समझता हूं कि वह साझा प्राथमिक कुंजी के कारण काम नहीं कर रहा था। लेकिन यह इस उदाहरण में मामला नहीं हो सकता क्योंकि रॉडटा आइटम 1 के साथ प्राथमिक कुंजी को साझा नहीं कर सकता क्योंकि आइटम 2 में समान आईडी हो सकती है।

किसी भी मदद के लिए धन्यवाद।

< मजबूत> संपादित करें

मुझे यह काम कर रहा है:

  modelbuilder.Entity & lt; Item1 & gt; () .HasOptional (d = & gt; d.RawData)। के साथ कई ()। HasForeignKey (d = & gt; डी। RawDataId) .WillCascadeOnDelete (सत्य); //आदि।  

डेटाबेस ठीक दिखता है थोड़ी अजीब लगता है जैसा कि WithMany के रूप में वर्णन किया जा सकता है, लेकिन संभवतः तब क्या आवश्यक है जब तब बहुत से रिश्ते हों?

itemprop = "text">

आपको RawDataclass में Item1, Item2, और Item3 को शामिल करने की आवश्यकता है:

  सार्वजनिक वर्ग RawData {[Key] [DatabaseGeneratedAttribute (DatabaseGeneratedOption.Identity)] सार्वजनिक इन्ट आईडी {get; सेट; } सार्वजनिक आभासी मद 1 i1 {get; set;} सार्वजनिक आभासी मद 2 i2 {get; set;} सार्वजनिक वर्चुअल आइटम 3 i3 {get; set;} // अन्य गुण}  

Comments