[解決済み] DbSetの全要素を削除するには?
2023-05-13 10:30:33
質問
Entity Framework 4.3 で System.Data.Entity.DbSet のすべての要素を削除する最良の方法は何ですか。
どのように解決するのですか?
dbContext.Database.ExecuteSqlCommand("delete from MyTable");
(冗談抜きで)
問題は、EFはバッチコマンドをサポートしておらず、直接的なDMLを使用せずにセット内のすべてのエンティティを削除する唯一の方法であることです。
foreach (var entity in dbContext.MyEntities)
dbContext.MyEntities.Remove(entity);
dbContext.SaveChanges();
あるいは、完全な実体を読み込まないようにするために、もう少し安くすることもできます。
foreach (var id in dbContext.MyEntities.Select(e => e.Id))
{
var entity = new MyEntity { Id = id };
dbContext.MyEntities.Attach(entity);
dbContext.MyEntities.Remove(entity);
}
dbContext.SaveChanges();
しかし、どちらの場合も
をすべて
エンティティを読み込むか
すべて
のキー・プロパティを使って、セットからエンティティを一つずつ削除します。さらに
SaveChanges
EFはデータベースにn(=セット内のエンティティの数)個のDELETE文を送信し、それもDB内で1つずつ実行されます(1つのトランザクション内)。
したがって、単一の DELETE ステートメントを必要とするだけなので、この目的には直接 SQL が明らかに望ましいです。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】C#で四捨五入する方法
-
[解決済み] LINQを使用してList<T>から要素を削除する
-
[解決済み] enumを列挙するには
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】パラメータ付きRedirectToAction