2015-01-10 42 views
0

我環顧四周,找到了使用TRUNCATE清除表的方法,但是這隻適用於未被引用爲外鍵的表。使用FK約束實體框架清空表

我還發現了一種描述找到所有數據的範圍,然後刪除該範圍的方法。然而,這是一種效率稍低的方法,如果有更好的選擇,它會希望避免它。

什麼是最有效的方法來清空這兩個表?

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旗艦版,與實體框架6.1.2和的LocalDB

+0

你應該這樣做(清除表)嗎?或者是什麼? –

+0

還有其他什麼依賴於'AfdelingId'或'ProductId'嗎? – Justin

+0

我希望它在我的C#代碼中,但是如果它能更好地工作,它可能會使用直接的SQL。產品還有另一個FK。 – SpiritBH

回答

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(); 

當然假定你可以跟蹤的關係。乾杯。

+0

哦謝謝,對不起,忽略了 – SpiritBH