2011-10-30 8 views
3

私はLINQがデータベースにアクセスするときに頭を抱えて、最適な時がどうなっているかを知るのに苦労しています。主に、このUPDATEステートメントは、データベースへの2回のトリップを行っているようです。しかし、LINQには、行の問合せ、更新、および変更の保存が不十分な「更新」はないようです。基本的なSQLでは、私はどこで更新することができるはずです。データベースへの1回のトリップでLINQで更新しますか?

var query = from u in db.users where u.id == 1 select u; 
foreach (user u in query) 
{ 
    u.name = "JOE"; 
} 
db.Save(); 

私は保存の魔法を得る。それは私がそれらをコミットする前に複数の変更を加えることができます。しかし、まだ行の最初のクエリがあるようです。

思考?アイデア?

EDIT

今テストし、私は実際には二度のデータベースに行くことがないことを確認することができます。より良い方法が必要です!

答えて

1

idた場合には、使用することができ、主キー、次のとおりです。

var u = new user { id = 1 }; 
db.users.Attach(u); 
u.name = "JOE"; 
db.SubmitChanges(); 
+0

Attachはデータベースに接続して、どの行が接続されているかを把握していませんか? – carlbenson

+0

いいえ、それは必要ありません。 'id'が' 1'の 'user'を参照していることが分かります。データベースからフェッチされていないため、(明らかに)オブジェクトから他のプロパティを読み取ることはできません。しかし、あなたが加えた変更は、 'UPDATE'コマンドによって適用されます。 – James

+0

それは素晴らしいです。私は、SQLクエリが実際に何であるかを見るためにブレークポイントで確認できるローカルはありますか? – carlbenson

関連する問題