使用 FK 约束清空带有 Entity Framework 的表

Emptying tables with Entity Framework with FK Constraints

我环顾四周,找到了使用 TRUNCATE 清除 table 的方法,但这只适用于未被引用为外键的 table。

我还找到了一种方法,它描述了找到所有数据的范围,然后删除该范围。然而,这是一种效率较低的方法,如果有更好的选择,我想避免使用它。

清空这 2 个 table 的最有效方法是什么?

public class Product
{
    public int ProductID { get; set; }
    public String ProductNaam { get; set; }

    [ForeignKey("Afdeling")]
    public int? AfdelingID { get; set; }
    public virtual Afdeling Afdeling { get; set; }
}

public class Afdeling
{
    public int AfdelingId { get; set; }
    public string Naam { get; set; }
}

我在 .net 4.5 WPF 项目中使用 Visual Studio 2013 Ultimate,其中 Entity Framework 6.1.2 和 LocalDB

副本:Entity Framework. Delete all rows in table

查看社区维基答案。

public static void Clear<T>(this DbSet<T> dbSet) where T : class
{
    dbSet.RemoveRange(dbSet);
}

然后

DbContext.Afedlings.Clear();
DbContext.Products.Clear();
await VotingTestContext.SaveChangesAsync();

当然假设您可以跟踪关系。干杯。