2017-11-21 4 views
0

私のデータベースでは、親テーブルと親テーブルを持つ外部テーブルを持つ子テーブルがあります。両方のテーブルからすべての行をクリアする必要があります。私は最初の子テーブルをクリアしておりますが、私は、あるため、外部キーの第二の切り捨てで例外を取得LINQ to Entity:外部キー制約のためにテーブルの切り捨てが失敗する

using (MuseumDBEntities db = new MuseumDBEntities()) 
{ 
    db.Database.ExecuteSqlCommand("truncate table childTable"); 
    db.Database.ExecuteSqlCommand("truncate table parentTable"); 
} 

私はEntity Frameworkの中に次のコードを使用していました。

どうすればよいですか?両方のテーブルのすべての行を削除する別の方法はありますか?

すべての行のforeachループが実用的かどうかわかりません。

答えて

0

これはSQLサーバーの問題です。

あなたはあなたの目標を達成するための二つの方法があります:それはあまりにもあるので、私はこのソリューションをお勧めしません外部キー(を再作成、テーブルを切り捨てると、

  1. ドロップ外部キーを代わりにTruncate使用Deleteの多くの仕事や普段価値がない)

  2. (私は通常、このメソッドを使用します)

あなたのコードは次のようになります。

using (MuseumDBEntities db = new MuseumDBEntities()) 
{ 
    db.Database.ExecuteSqlCommand("Delete from childTable"); 
    db.Database.ExecuteSqlCommand("Delete from parentTable"); 
} 

2つの削除文は何の条件(なしwhere句)を持っていないので、すべての行がテーブルから削除されます。

関連する問題