क्या एंटिटी फ्रेमवर्क 5 कोड में स्वचालित रूप से जेनरेट की गई कई-से-अधिक लिंक तालिका पर कैस्केड डिलीट विकल्प को चुनना संभव है? यहाँ एक सरल उदाहरण है जो यह की जरूरत है:चुनिंदा रूप से अक्षम करना कैस्केड को कई से अधिक लिंक टेबल पर हटाएं
public class Parent
{
public int Id { get; set; }
public virtual IList<ChildA> As { get; set; }
public virtual IList<ChildB> Bs { get; set; }
}
public class ChildA
{
public int Id { get; set; }
[Required]
public virtual Parent Parent { get; set; }
public virtual IList<ChildB> ChildBJoins { get; set; }
}
public class ChildB
{
public int Id { get; set; }
[Required]
public virtual Parent Parent { get; set; }
public virtual IList<ChildA> ChildAJoins { get; set; }
}
public class TestContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
public DbSet<ChildA> As { get; set; }
public DbSet<ChildB> Bs { get; set; }
}
अपने मौजूदा रूप में इस संदर्भ झरना लिंक मेज पर पेश किया विकल्प को नष्ट की वजह से एक डेटाबेस के लिए लागू नहीं होगा। यदि मैं मैन्युअल लिंक टेबल बनाना चाहता था, तो मैं फ्लैंट एपीआई का उपयोग इसके एक तरफ को कैस्केड करने के लिए कॉन्फ़िगर करने के लिए कर सकता था, लेकिन विकल्प कई से अधिक रिश्तों पर उपलब्ध नहीं है।
मुझे पता है कि मैं पर कास्केड हटाता निष्क्रिय कर सकते हैं कर रहा हूँ सब कई करने वाली कई प्रति this question रूप ManyToManyCascadeDeleteConvention
को हटाने के द्वारा मिलती है, लेकिन यह है कि मैं क्या कर रहा हूँ के बाद नहीं है - मैं सिर्फ एक के लिए यह करने के लिए सक्षम होना चाहते हैं संबंध, या आदर्श रूप से एक संबंध के एक तरफ।
आपको शायद 'माता-पिता-चाइल्डए' पर कैस्केडिंग डिलीट अक्षम करना होगा 'या 'अभिभावक-बाल बी' एक-टू- समस्या को हल करने के लिए कई रिश्ते। – Slauma
मैं ऐसा नहीं करना चाहता - मैं उस रिश्ते को वहां छोड़ना चाहता हूं और इसे कई से हटा सकता हूं। यदि मैं मैन्युअल लिंक इकाई बनाता हूं, तो मैं इसे कर सकता हूं, लेकिन स्वचालित के साथ कोई रास्ता नहीं ढूंढ सकता। – Richard