ठीक है, मेरे पास है एक-से-कई संबंधित मॉडल:ईएफ कोड पहले डेटाबेस में कई संबंधित रिकॉर्ड में बच्चे को कैसे हटाएं?
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string ChildName { get; set; }
}
मुझे क्या करना चाहते हैं स्पष्ट Parent.Children
है और डेटाबेस से संबंधित बच्चे संस्थाओं को हटा दें। मैं पहले से ही की कोशिश की है:
डाटाबेस संदर्भ वर्ग:
modelBuilder.Entity<Parent>()
.HasMany(p => p.Children)
.WithOptional()
.WillCascadeOnDelete(true);
इस ठीक काम करता है, लेकिन मैं अभी भी Parent_Id = null
क्षेत्रों जब मैं
parent.Children.Clear();
repository.InsertOrUpdate(parent);
कर में साथ डेटाबेस में अनावश्यक रिकॉर्ड मेरी भंडार वर्ग। इसके अलावा एक ही व्यवहार जब मैं क्या है:
modelBuilder.Entity<Parent>()
.HasMany(pr => pr.Children)
.WithOptional(ri => ri.Parent)
.WillCascadeOnDelete(true);
अतिरिक्त
Parent
संपत्ति के साथ
Child
public class Child
{
...
public Parent Parent { get; set; }
...
}
में कक्षा या जब मैं Child
कक्षा में अतिरिक्त PARENT_ID संपत्ति के साथ
modelBuilder.Entity<Child>()
.HasOptional(p => p.Parent)
.WithMany(p => p.Children)
.HasForeignKey(p => p.Parent_Id)
.WillCascadeOnDelete(true);
कर
public class Child
{
...
public int Parent_Id { get; set; }
...
}
तो, मैं सही ढंग से कैस्केड हटाने को कैसे कॉन्फ़िगर कर सकता हूं? या मुझे उन बच्चों की संस्थाओं को कैसे हटाया जाना चाहिए? मुझे लगता है कि यह अनौपचारिक काम है लेकिन मुझे बस कुछ याद आ रहा है।
क्या आप कुछ और कोड पोस्ट कर सकते हैं? हो सकता है कि आपके 'ऑनमोडेल क्रिएटिंग() 'की पूरी सामग्री? जब मैं आपकी संस्थाओं और आपके पहले मैपिंग प्रयास को कॉपी और पेस्ट करता हूं (और दोनों आईडी के लिए मुख्य संपत्ति के रूप में 'आईडी' सेट करता हूं), तो मेरे लिए सही ढंग से कैस्केडिंग कर रहे हैं। –