2011-10-12 9 views
8

मैं है निम्नलिखित वर्ग:एफई कोड पहले - Fluent एपीआई (WithRequiredDependent और WithRequiredPrincipal)

public class User 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public Couple Couple { get; set; } 
} 

public class Couple 
{ 
    public Guid Id { get; set; } 
    public User Groom { get; set; } 
    public User Bride { get; set; } 
} 

महत्वपूर्ण बिंदु:

  1. Bride और Groom गुण
  2. एक आवश्यक हैं -एक-रिश्ते
  3. User वर्ग में, यह Couple

DbContext आवश्यक OnModelCreating

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredPrincipal(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

में लेकिन मैं आवश्यक नहीं किया जा सकता है!

सभी फिल्में डेटाबेस में शून्य के साथ हैं!

मैं डेटाबेस में फ़ील्ड को शून्य के रूप में कैसे प्राप्त करूं? यदि एपीआई फ़्लिएंट का उपयोग कर संभव हो।

उत्तर

5

यह इस होना चाहिए:

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

कैसे WithRequiredDependent काम करता है: रिश्ते के दूसरे पक्ष पर एक नेविगेशन संपत्ति के बिना आवश्यक: रिश्ते के लिए आवश्यक हो कॉन्फ़िगर करती है। कॉन्फ़िगर किया जा रहा इकाई प्रकार निर्भर होगा और प्रिंसिपल के लिए एक विदेशी कुंजी होगी। इकाई टाइप करें कि संबंध लक्ष्य संबंधों में प्रिंसिपल होंगे।


अर्थ: के कोड की पहली रेखा यहाँ पर विचार करें। यह इकाई में एक विदेशी कुंजी के लिए कॉन्फ़िगर किया जा रहा बनाता है (उपयोगकर्ता) यह निर्भर बनाने और रिश्ते के दूसरे पक्ष बनाने (युगल) प्रधान


महत्वपूर्ण: डॉन क्या आपको लगता है कि आप जिस कॉन्फ़िगरेशन की इच्छा रखते हैं वह डेडलॉक उत्पन्न करेगा? मैंने ऊपर दिए गए कोड का परीक्षण नहीं किया है, लेकिन यह कॉन्फ़िगरेशन मेरे लिए एक डेडलॉक प्रतीत होता है, इसलिए मुझे यकीन नहीं है कि क्या ईएफ आपको इसे बनाने की अनुमति देगा। उपयोगकर्ता को एक युगल की आवश्यकता होनी चाहिए, और युगल को उसी उपयोगकर्ता की आवश्यकता होनी चाहिए जो मुझे लगता है।

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