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

时间:2015-01-10 14:45:37

标签: c# sql-server wpf entity-framework localdb

我环顾四周,找到了使用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

1 个答案:

答案 0 :(得分:1)

重复: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();

当然假设您可以跟踪关系。欢呼声。