5

के साथ कई रिश्तों में एकाधिक एक मैं EntityFramework 4.1 का उपयोग कर रहा हूं।एंटीटी फ्रेमवर्क

मैं निम्नलिखित मॉडल है:

public class User 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 

    public virtual User Creator { get; set; } 
    public virtual User LastEditor { get; set; } 
} 

जब मैं अपने डेटाबेस उत्पन्न करने के लिए मैं यह त्रुटि आई प्रयास करें:

public class Course 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public virtual User Creator { get; set; } 
    public virtual User LastEditor { get; set; } 
} 

:

Unable to determine the principal end of an association between the types 'User' and 'User'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

लेकिन मैं यह भी इस वर्ग के लिए है और यह ठीक काम करता है, मेरे पास ये विदेशी कुंजी उत्पन्न हुई हैं:

Creator_Id 
LastEditor_Id 

क्या मेरे पास यह काम करने के लिए मेरे उपयोगकर्ता मॉडल में जोड़ने के लिए कुछ भी है?

+0

इस सवाल पर एक नज़र डालें और देखें कि यह सही दिशा में ले जाता है: http://stackoverflow.com User में संपत्तियों के लिए एक ही लक्ष्य को हासिल करने के लिए आप Fluent एपीआई के साथ संबंधों को कॉन्फिगर करना होगा/प्रश्न/6531671/क्या-करता-प्रिंसिपल-एंड-ए-एसोसिएशन-साधन-इन -11-रिश्ते-इन-इकाई-fr – Cyric297

उत्तर

7

एफई कोशिश करता है - प्रथा के अनुसार - User.Creator और User.LastEditor के बीच एक-से-एक संबंध बनाने के लिए, क्योंकि वे दोनों User वर्ग जहां वे में स्थित खुद को कर रहे हैं का उल्लेख है कि Course वर्ग के लिए ऐसा नहीं है।। Course.Creator और Course.LastEditor ईएफ User पर दो से एक से अधिक रिश्ते बनाता है।

modelBuilder.Entity<User>() 
    .HasOptional(u => u.Creator)  // or HasRequired 
    .WithMany(); 

modelBuilder.Entity<User>() 
    .HasOptional(u => u.LastEditor) // or HasRequired 
    .WithMany(); 
+0

धन्यवाद! यह काम करता हैं! और अच्छी व्याख्या। –