मैं स्वतः अपने डेटाबेस स्कीमा बनाने के लिए इकाई की रूपरेखा कोड-पहले उपयोग कर रहा हूँ, और मेरे संस्थाओं में से एक इस तरह दिखता है:ईएफ कोड-पहला क्यों एक बाहरी विदेशी कुंजी कॉलम उत्पन्न कर रहा है?
public class AssessmentsCaseStudies {
#region Persisted fields
[Required]
[Key, Column(Order=0)]
[ForeignKey("Assessment")]
public int AssessmentId { get; set; }
[Required]
[Key, Column(Order=1)]
[ForeignKey("CaseStudy")]
public int CaseStudyId { get; set; }
[Required]
public int Score { get; set; }
[ForeignKey("Follows")]
public int? FollowsCaseStudyId { get; set; }
#endregion
#region Navigation properties
public virtual Assessment Assessment { get; set; }
public virtual CaseStudy CaseStudy { get; set; }
public virtual CaseStudy Follows { get; set; }
#endregion
}
जब एफई मेरी डेटाबेस ऑटो उत्पन्न करता है, यह निम्नलिखित कॉलम के साथ एक मेज उत्पन्न करता है :
AssessmentId (PK, FK, int, not null)
CaseStudyId (PK, FK, int, not null)
Score (int, not null)
FollowsCaseStudyId (FK, int, null)
CaseStudy_CaseStudyId (FK, int, null)
यह सब ठीक CaseStudy_CaseStudyId
स्तंभ से अलग है। यह क्यों उत्पन्न हुआ है? ये किसके लिये है? मैं इसे उत्पन्न होने से कैसे रोक सकता हूं? मेरा संदेह यह है कि ईएफ CaseStudy
के ICollection<AssessmentsCaseStudies>
CaseStudyId
कॉलम के साथ स्वचालित रूप से मेल नहीं खा सकता है, इसलिए यह उस नेविगेशन प्रॉपर्टी के लिए दोनों को एक साथ जोड़ने के लिए अपना कॉलम बनाता है।
मैं वास्तव में उस प्रश्न के स्वीकृत उत्तर को समझ नहीं पा रहा हूं। मेरे पास 'आकलन कैसस्टूडीज' में सटीक दो 'केसस्टूडी' संदर्भ हैं, इसलिए मेरे पास कई से अधिक रिश्ते नहीं हैं और मुझे नहीं लगता कि मुझे जंक्शन तालिका क्यों चाहिए। मेरे पास 'सार्वजनिक वर्चुअल आईसीलेक्शन <आकलन कैसस्टूडीज> आकलन केस स्टडीज {प्राप्त करें; सेट; } 'केसस्टूडी' में, हालांकि, मुझे यह कहना एक तरीका चाहिए कि आईसीओलेक्शन को 'केसस्टूडीआईडी' एफके से संबंधित होना चाहिए, न कि 'FollowsCaseStudyId' FK। – Jez
ठीक है, मैंने सोचा कि इसमें उपयोगी जानकारी हो सकती है। क्या आप एक ट्रिम किए गए उदाहरण को बनाने का प्रयास कर सकते हैं, उदाहरण के लिए केवल 'आकलन', 'केसस्टूडी' और 'आकलन कैसस्टूडी' इकाई के साथ, प्रत्येक में केवल 'आईडी' फ़ील्ड और 'AssesmentCaseStudy' युक्त' AssesmentID' और 'CaseStudyID' 'फ़ील्ड? क्या समस्या तब भी होती है? – CodeCaster
मुझे नहीं लगता कि यह प्रश्न बंद कर दिया जाना चाहिए क्योंकि "डुप्ले" प्रश्न का स्वीकृत उत्तर चीजों को अच्छी तरह से समझाता नहीं है और मुझे बेहतर जवाब चाहिए। फिर से खोलने के लिए वोट दें। – Jez