我正在使用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; }
}
他們在我的DbContext鏈接通過
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ParentConfiguration());
}
internal class ParentConfiguration: EntityTypeConfiguration<Parent>
{
internal ParentConfiguration()
{
HasMany(r => r.Children).WithRequired(o => o.Parent);
}
}
我現在有
var parent = (from p in Parents
where p.ParentId == parentId
select p).FirstOrDefault();
while (parent.Children.Count > 0)
{
Children.Remove(parent.Items[0]);
}
Context.SaveChanges();
的SQL生成是太可怕了。
我想創建一個函數,該函數刪除父項的所有子項而不先選擇它們。在SQL中,這可以通過一個非常簡單的SQL調用完成。
DELETE FROM Children WHERE ParentId = @ParentId
這是可能與EF或我我將不得不回到使用SQL /存儲過程對於此功能。
謝謝,我有這樣的感覺。 – Magpie