2011-05-16 18 views
17

में एक ही मेज की ओर इशारा करते कुंजी मैं निम्नलिखित डीबी रिश्ते के लिए इकाई की रूपरेखा 4.1 कोड पहला मॉडल लिखने की कोशिश कर पर अटक कर रहा हूँ।एकाधिक विदेशी इकाई की रूपरेखा 4.1 कोड पहले

यहाँ संबंधों का एक दृश्य है। enter image description here

dbo। [कंपनियों] या तो विक्रेता या कंपनी के प्रकार के रूप में देनदार हो सकता है।

dbo। [SellerDebtors] कनेक्शन एक ऋणी कंपनी के साथ एक विक्रेता कंपनी है परिभाषित करता है।

कोड मैं लिखा है अपने मूल एफई 4.0 POCO मॉडल कोड पर आधारित है। यही वह है जिसके साथ मैं आया हूं - यह कोड काम नहीं करता है।

public class SellerDebtor 
{ 
    public int SellerDebtorId { get; set; } 
    public int DebtorCompanyId { get; set; } 
    public int SellerCompanyId { get; set; } 

    public Company DebtorCompany { get; set; } 
    public Company SellerCompany { get; set; } 

    public ICollection<SellerDebtorInfo> SellerDebtorInfos { get; set; } 
    public ICollection<SellerDebtorFile> SellerDebtorFiles { get; set; }  
} 


public class Company 
{ 
    public int CompanyId { get; set; } 
    public string CompanyType { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<User> Users { get; set; } 
    public virtual ICollection<CompanyInfo> CompanyInfos { get; set; } 
    public virtual ICollection<CompanyFile> CompanyFiles { get; set; } 

    public virtual ICollection<SellerDebtor> SellerDebtorDebtorCompanies { get; set; } 
    public virtual ICollection<SellerDebtor> SellerDebtorSellerCompanies { get; set; } 

} 

पल में, मैं एक त्रुटि के रूप में इस हो रही है: आदर्श रूप में

System.Data.SqlClient.SqlException: Invalid column name 'DebtorCompany_CompanyId'. 
Invalid column name 'SellerCompany_CompanyId'. 
Invalid column name 'Company_CompanyId'. 
Invalid column name 'Company_CompanyId1'. 

, मैं रिश्तों के नामकरण बनाए रखने में सक्षम होना चाहते हैं।

मेरा अनुमान है कि मैं कुछ विशेषताओं निर्धारित करने की आवश्यकता है, लेकिन मैं क्या स्थापित करने के लिए यकीन नहीं है।

+0

की [इकाई की रूपरेखा कोड पहले - दो एक ही मेज से विदेशी कुंजी] संभावित डुप्लिकेट (http://stackoverflow.com/questions/5559043/entity-framework-code-first-two- विदेशी-चाबियाँ-समान-सारणी) –

उत्तर

18

ईएफ सम्मेलन द्वारा निर्धारित करने में सक्षम नहीं है जो आपके 2 वर्गों पर नेविगेशन गुण एक साथ हैं और 2 (दोनों तरफ के सिरों के साथ) के बजाय 4 रिश्ते (दूसरी ओर एक अंत के बिना) बनाता है। यह समस्या तब होती है जब आपके पास एक ही श्रेणी में एक ही प्रकार की एक से अधिक नेविगेशन प्रॉपर्टी (Company) होती है। आप इस निम्नलिखित तरीके से ठीक करने की कोशिश कर सकते हैं:

public class SellerDebtor 
{ 
    public int SellerDebtorId { get; set; } 
    [ForeignKey("DebtorCompany")] 
    public int DebtorCompanyId { get; set; } 
    [ForeignKey("SellerCompany")] 
    public int SellerCompanyId { get; set; } 

    [InverseProperty("SellerDebtorDebtorCompanies")] 
    public Company DebtorCompany { get; set; } 
    [InverseProperty("SellerDebtorSellerCompanies")] 
    public Company SellerCompany { get; set; } 

    public ICollection<SellerDebtorInfo> SellerDebtorInfos { get; set; } 
    public ICollection<SellerDebtorFile> SellerDebtorFiles { get; set; }  
} 

[InverseProperty(...)] संबंध के दूसरे छोर पर नेविगेशन संपत्ति को परिभाषित करता है और यह स्पष्ट रूप एफई यह बताती है कि नेविगेशन गुण के जोड़े एक रिश्ते में एक साथ हैं।

3

इस ब्लॉग में फ्लुएंट एपीआई कॉन्फ़िगरेशन का उपयोग करने का उदाहरण है।

Multiple foreign keys within same table using CodeFirst Entity Framework and Fluent API

modelBuilder.Entity<Branch>().HasOptional(b => b.PrimaryContact)   
      .WithMany(a => a.PrimaryContactFor).HasForeignKey(b=>b.PrimaryContactID); 
+0

वास्तव में खुशी है कि आपने इसे पोस्ट किया है। मुझे आज इस फ्लुएंट एपीआई उदाहरण की आवश्यकता है। – Brandon

+0

आईएमएचओ सबसे अच्छा जवाब। धाराप्रवाह एपीआई एक धूप दिन के रूप में स्पष्ट है। – alex440

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