しばらくの間、Entity Framework 6を使用しています。.net c#アプリケーションループからSQL Serverデータベーステーブルの何百ものレコードを適切かつ効率的に更新します。
しかし、私はすべてのユーザーをループに300人の-1000ユーザー
、それは非常に非効率的になるだろうし、DBにいくつかの列を更新するのが遅いですを必要としています。 EF6.xで?代わりにADO.NETを使用するか、ワイヤを介して何らかのオブジェクトを送信する必要があります。
現在、私は私が他のユーザーに掛けあれば、基本的にそれはOKだろう。この
rpmuser.usr_id = user;
rpmuser = db.rpm_usr.Find(rpmuser.usr_id);
rpmuser.lst_pwd_chg_dtm = dateTime;
rpmuser.cre_dtm = dateTime;
rpmuser.usr_pwd = hash;
rpmuser.salt = salt;
db.SaveChanges();
のように更新しますか?どのように私は一括更新でこれを行うことができますか?あなたがこのテストするには、次のコードを使用することができます
for(.... ) {
// different user id
// all the other needed poco model changes above... etc.
// db.SaveChanges()
}
をのhttp:// stackoverflowの。com/questions/29892410/update-records-in-foreach-loop-in-entity-framework-6)を参照してください。正しい方向に向けるかもしれません。 –
最終的なパフォーマンスが目標である場合は、更新ステートメントを書き込んでDbに渡すか、spocを作成してコードから呼び出します。 –
1,000レコードはあまりありません。ループ内でFind()とSaveChanges()を実行しないでください。コレクション、ループ、SaveChanges()を一度取得してください。 –