2012-11-21 12 views
5

इकाई की रूपरेखा कोड पहले मानचित्रण मैं दो तालिकाओं है:बिना विदेशी कुंजी

आवश्यकता

  • आईडी (int) पीके
  • ClientID (int)
  • JobNumber (int)

टिप्पणी

  • आईडी (int) पीके
  • job_id (int)
  • टिप्पणी (varchar)

टेबल विदेशी कुंजी नहीं है और वहाँ किसी भी जोड़ने की कोई संभावना नहीं है। मैं उन्हें ईएफ में मैप करने की कोशिश कर रहा हूं। मेरे पास प्रत्येक के लिए कक्षाएं हैं और मैं टिप्पणी को मानचित्र करने के लिए धाराप्रवाह कोड में रिश्ते को परिभाषित करने की कोशिश कर रहा हूं। Job_ID आवश्यकता के लिए। जॉब नम्बर। एक आवश्यकता में कई टिप्पणियां हो सकती हैं। आवश्यकता की टिप्पणियों की एक सूची है और टिप्पणी की एक आवश्यकता संपत्ति है।

modelBuilder.Entity<Comment>().HasRequired(c => c.Requirement) 
        .WithMany(s => s.Comments) 
        .HasForeignKey(f => f.Job_ID); 

मैं अटक Comment.Job_ID Requirement.JobNumber करने के लिए नक्शे को पाने के लिए कोशिश कर रहा हूँ:

मैं इस मानचित्रण सेटअप।

किसी भी मदद की सराहना की।

उत्तर

7

यह संभव नहीं है। एंटिटी फ्रेमवर्क के साथ Comment.Requirement नेविगेशन प्रॉपर्टी को प्रतिबिंबित करने के लिए Requirement में आमतौर पर (प्राथमिक) कुंजी प्रॉपर्टी द्वारा पहचाना जाता है, यानि ID द्वारा। परिभाषित करने के लिए कोई मैपिंग विकल्प नहीं है कि लक्षित संपत्ति प्रमुख संपत्ति से कुछ और है - जैसे JobNumber या कोई अन्य गैर-प्रमुख संपत्ति।

मैं केवल कल्पना कर सकता है कि आप मॉडल में "नकली" प्राथमिक कुंजी संपत्ति JobNumber बजाय ID (यह देखते हुए कि JobNumberRequirement तालिका में अद्वितीय है) हो सकती है:

modelBuilder.Entity<Requirement>().HasKey(r => r.JobNumber); 

मुझे नहीं पता पता है कि क्या अन्य अनचाहे दुष्प्रभाव हो सकते हैं। (निश्चित रूप से यह काम नहीं करता है अगर JobNumber अद्वितीय नहीं है क्योंकि ईएफ एक संदर्भ और अद्यतन/हटावट से जुड़ी एक ही कुंजी के साथ एक से अधिक इकाई रखने की अनुमति नहीं देगा और इसलिए सही रिकॉर्ड नहीं मिलेगा डेटाबेस।) यह मुझे गलत और हैकी लगता है। मैं ईमानदारी से यह भी कोशिश नहीं करता हूं कि इस तथ्य के साथ रहें कि आपके पास डेटाबेस में वास्तविक विदेशी कुंजी संबंध नहीं है, नेविगेशन गुण Requirement.Comments और Comment.Requirement भूल जाएं और तालिका डेटा/इकाइयों से संबंधित LINQ में मैन्युअल join एस का उपयोग करें मुझे उन्हें किसी दिए गए परिस्थिति में चाहिए।

+0

धन्यवाद। यह बहुत उपयोगी है। ऐसा महसूस करना शुरू हो रहा था कि मैं नियमों को थोड़ा अधिक झुका रहा था। खराब कोड गंध :-) – Matt

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