使用具有 FK 约束的实体框架清空表

本文关键字:实体 框架 清空 约束 FK | 更新日期: 2023-09-27 18:37:05

我已经环顾四周并找到了使用 TRUNCATE 清除表的方法,但这仅适用于未作为外键引用的表。

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

清空这两个表的最有效方法是什么?

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

使用具有 FK 约束的实体框架清空表

的重复项

:实体框架。删除表中的所有行

查看社区维基答案。

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

然后

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

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