1

Entity Framework、C#4.0、およびVisual Studio 2010を使用しています。4つのテーブルのコンテンツを削除するには、単純なSQLクエリを実行する必要があります。クエリには次のものが含まれます。

DELETE FROM dbo.tblMFile
DELETE FROM dbo.tblMContacts
DELETE FROM dbo.tblPersonDetails
DELETE FROM dbo.tblAddresses

一部のテーブル間に外部キーの制約があります。

これを行う簡単な方法はないようです。

最初の回答者の回答に対する私のコメントを参照して:

  • データの機密性が高いため、すべてのコンテンツをすばやく削除する方法が必要です(要件とセキュリティの問題)

  • 私はEFに不慣れで、学びたいと思っています

  • 上記の外部キー制約のため、切り捨ての代わりに削除を使用しています(また、上記のSQLは例示であり、決定的なものではありません)。

  • 私は強い型付けを強く信じており、すべてのオブジェクトの前に型インジケーターを付けています。デバッグにかかる​​時間(または数日)を節約できました。

  • 人間は礼儀正しく、敏感で、有益です(他の多くの属性の中でも)。私は人間を目指しています。

4

3 に答える 3

3

いいえ、それは良いことです。ORMは一括削除用ではありません。本当にLINQを使用してDELETEを発行する場合は、BlToolkitを使用して、LINQで任意のほぼ標準のDML非バルク(切り捨てなし)を表現できるようにします。

すべてのレコードを削除しますか?

削除ではなく、テーブルを切り捨てます。

TRUNCATE TABLE tblMFile

テーブルに含まれる量によっては、数千倍速くなる可能性があります。主な理由は、削除されたデータもログに記録されないためです。つまり、切り捨てが発生したという事実だけです。

于 2012-06-21T08:21:30.297 に答える
2

@TomTomからの回答に追加します。EntityFrameworkを使用して直接それを行うことはできません。でも君ならできる:

  • レコードを削除するためのストアドプロシージャを作成します(テーブル名をパラメータとして使用することもできます)
  • SQLコマンドを直接参照して記述しExecuteStoreQuery ください
于 2012-06-21T11:26:03.167 に答える
0

これを試して

_db.ExecuteStoreCommand("delete from MachineMaster where IdMachine =" + obj_Machine.IdMachine + "  or IdMasterMachine=" + obj_Machine.IdMachine  );
于 2018-05-18T09:30:02.300 に答える