C# 高效地删除多个记录
我正在使用EF4.1 POCO 我有两张桌子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
[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);