C# 高效地删除多个记录

C# 高效地删除多个记录,c#,entity-framework,C#,Entity Framework,我正在使用EF4.1 POCO 我有两张桌子 [Table("Parent")] public class Parent { public int ParentId { get; set; } /.. Other fields ../ public virtual List<Child> Children{ get; set; } } [Table("Child")] public class Child { public int ChildId { ge

我正在使用EF4.1 POCO

我有两张桌子

[Table("Parent")]
public class Parent
{
   public int ParentId { get; set; }
   /.. Other fields ../

   public virtual List<Child> Children{ get; set; }
}

[Table("Child")]
public class Child
{
   public int ChildId { get; set; }
   /.. Other fields ../

   public virtual Parent Parent { get; set; }
}
为生成的SQL非常糟糕

我想创建一个函数,删除父对象的所有子对象,而不首先选择所有子对象。在SQL中,这可以通过一个非常简单的SQL调用来完成

DELETE FROM Children WHERE ParentId = @ParentId

EF是否可以实现这一点,或者我将不得不重新使用SQL/Stored Procs来实现此功能。

EF无法在不先选择它们的情况下删除它们。我所做的只是使用普通的SQL。使用EF时,您仍然可以执行以下常规SQL代码:

YourContext.Database.ExecuteSqlCommand(@"DELETE FROM Children WHERE ParentId= {0}",TheParendId);

您不能使用EF执行批量操作。EF、L2SQL、NHibernate等表单在管理单个或几个对象方面做得很好。批量操作在设计时没有考虑。您需要使用SQL查询或SP以有效的方式执行。DbContext公开数据库,您可以将其用于SQL查询。

谢谢,我感觉情况就是这样。
DELETE FROM Children WHERE ParentId = @ParentId
YourContext.Database.ExecuteSqlCommand(@"DELETE FROM Children WHERE ParentId= {0}",TheParendId);