2012-04-13 2 views
4

データベースにプライマリキーを持つテーブルがあります。emp_pkです。 LINQを使用して、私はいくつかの操作を実行しようとしています。私はいくつかのプロパティを変更して呼び出すと、SubmitChangesは内部的にwhere句としてすべてのフィールドを追加します。それを取り除く方法

context.SubmitChanges(); 

理想的な句がwhere emp_pk = valueが含まれているべき場所。

しかし、私はSQLプロファイラからクエリを見直すと、私はLINQエンジンによって生成されたと思われるwhere節に多くの条件を見ます。これは大きなパフォーマンスの問題を引き起こしています。

クエリを最適化するこのケースでは誰も助けてくれますか?

+0

これは大きなパフォーマンスの問題を引き起こしています:本当に??なぜですか?また、linq-2-sqlで生成されるパフォーマンスの問題は、一度に1つずつ大量のレコードを更新しています。 – Pleun

+0

10k自体は問題ではありません。問題は、一度に更新する人の数です。大量のレコードを同時に更新している場合、Linq2Sqlはパフォーマンス上最適な選択ではありません – Pleun

答えて

6

これは、楽観的並行性チェックが有効になっているためです。 dbmlデザイナーでUpdate Check =カラムごとに決して設定しないで、カラムごとにそれを無効にすることができます

+0

私はクラスを生成するためにSQLMetalを使用しています。私はSQLMEtalでこれをどうやってやることができるか教えてください。 –

+0

私はSQLMetalによって生成されたクラスを見た。いくつかのカラムでは、このプロパティは設定されていますが、すべてではありません。また、このプロパティが設定されている列の場合、これらの列はSET文で使用されます。 –

関連する問題