2017-10-18 35 views
0

如何通過父項從一對多關係中刪除所有子實體 - 注意我只想刪除子項。ASP MVC 5 - 從父項刪除子實體

public class Parent 
{ 
    public int Id { get; set; } 
    public ICollection<Child> Children { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
    public int ParentId { get; set; } 
    public string Name { get; set; } 

    public virtual Parent Parent { get; set; } 
} 

有沒有一種簡便方法,可以說,像下面的東西:

parent.children.Remove(); 

回答

0

我相信,你的機制,刪除在EF 4的子元素和上面應該是:

parent.children.ToList().ForEach(c => context.Children.Remove(c)); 
context.SaveChanges(); 

我在過去發現它可能自己寫一個DELETE會更快,但你應該決定什麼是最適合你的。在實體框架解決方案中引入SQL DELETE會增加測試的複雜性,因爲您的DELETE將取決於您可能一直試圖避免的事情,因爲EF會全部處理它。在您優化並決定哪些權衡可以爲您工作之前,始終進行衡量。

+0

我該如何刪除它?我收到錯誤'DbSet不包含刪除的定義' – adam78

+0

@ adam78 - 他們不贊成該方法......誰知道! (儘管它仍然在ObjectContext上),所以更新了示例。 – Fenton