2011-03-20 18 views
14

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

उदाहरण के लिए निम्नलिखित दो कक्षाएं दी गई हैं, मैं प्रोजेक्ट क्लास की संपत्ति के रूप में जॉबआईड नहीं रखना चाहूंगा।

public class Job : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Company { get; set; } 

    [Required] 
    [StringLength(100)] 
    public string JobTitle { get; set; } 

    public ICollection<Project> Projects { get; set; } 
} 

public class Project : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Name { get; set; } 

    [Required] 
    public string Summary { get; set; } 

    public int JobId { get; set; } 
} 

वहाँ व्यापक सक्षम करने के लिए एक रास्ता है रिश्ते के कई पक्ष पर विदेशी कुंजी प्रकट किए बिना एफई कोड पहले में हटा देता है?

उत्तर

14

यूप! JobId निकालें और निम्नलिखित जोड़ें:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Job>().HasMany(j => j.Projects).WithRequired(); 
    } 

डेटाबेस में, यह एक व्यापक पी/FK संबंध में हटाने के जोड़ देगा।

(मुझे लगता है कि आपके मॉडलबेस में एक पूर्णांक आईडी है =)

+0

बिल्कुल सही। धन्यवाद! –

+0

मैं जो स्पष्ट नहीं कहूंगा ... –