2012-02-16 3 views
-2

を使用して操作を削除します。'var select = from st from context.student st.college == "ABC" select st;を使用するとlinq

context.student.DeleteAllonSubmit(選択)。 context.student.SubmitChanges();

「ABC」として、大学名を含む10件のレコードがあるならば、10削除クエリを解雇されています。

+1

http://stackoverflow.com/questions/445033/use-linq-to-generate-direct-update-without-selectの可能な複製 –

+0

しかし、選択クエリの実行の正確な理由はまだクリアされていません。どうすれば私は更新と削除クエリの選択ステートメントを避けることができますLinq – Piyush

+0

を使用して私は思います - 答えとして - LINQやLINQ to SQLには、セットベースの更新機能があると思います。 2番目の「答え」は方法を提供します。しかし誰かに何か追加があるかどうか確認してください。私は興味があるだろう –

答えて

1

まあ、私の唯一の説明は、LINQのは、最初のアップデート/削除したい行を選択しなければならないことです。どの行が更新/削除によって影響を受けるかを知った後で、Linqはあなたが望む行を更新/削除する最も十分なクエリを作り、それを実行します。

私が間違っているなら、私を修正してくださいが、これは私が、私は確かにそれを知りませんが起こっていると思うものです。

+0

実際にはどうなるのですか?オブジェクトcontectを作成すると、エンティティ・フレームワークは、edmxファイル(またはデータベースからオブジェクトへの変換を処理する別のファイル)を使用して、データベースからオブジェクトを作成します。これらのオブジェクトはデータベースと同期していません。したがって、オブジェクトコンテキストからオブジェクトを削除/更新し、オブジェクトコンテキストを保存する場合、エンティティフレームワークはオブジェクトをデータベース内のオブジェクトと比較します(edmx(または他の)ファイルも使用します)。エンティティ・フレームワークは、変更に応じて(最適なクエリを使用して)データベースを更新します。 –

+0

助けてくれてうれしいです(アップ投票に忘れないでください:))。私が示唆したいのは、あなたのオブジェクトコンテキストを開いて、削除したいすべての行を削除する単一のLinqクエリを実行することです。その後、変更を保存してオブジェクトコンテキストを閉じます(usingステートメントを使用する必要がありますが、それは別のものです)。 Linqは、それが単一のクエリで可能であることを検出することが賢明でなければなりません。あなたはLinqが事実上同じことをすることができるようにしました。次に、エンティティフレームワークが正しいクエリを実行することをLinq icmに信頼させるだけです。また、SQL Server 2008で送信クエリを監視することもできます。 –

+0

あなたがやっているLinqクエリを投稿できますか?これらの10個のクエリが正確に何であるか把握してください。テーブルをスキャンするテーブルを検索する –

関連する問題