0

Ok、

単一のオブジェクトを更新する方法は次のとおりです。

public void UpdateRespondent(Respondent changed)
{
    var respondent = db.Respondents.FirstOrDefault(r => r.RespondentId == changed.RespondentId);

    db.Respondents.ApplyCurrentValues(changed);
    db.SaveChanges();
}

これにより、1 つの選択と 1 つの更新が呼び出されます (何かが変更された場合)。

さて、List<Respondent>何百もの がある場合、ループ内のそれぞれで UpdateRespondent(changed) を呼び出すにはどうすればよいですか? その結果、数百 * 2 の sql ステートメントが作成されます。

または、これを行うためのより効率的な方法はありますか?

ありがとう。

4

1 に答える 1

1

EF はバッチ更新をサポートしていません。EntityFramework Extended Library の使用を調べることができます - 私はそれを使用して成功した他の人を見てきました:

https://github.com/loresoft/EntityFramework.Extended

上記のリンクからのコード スニペット:

//update all tasks with status of 1 to status of 2
context.Tasks.Update(
    t => t.StatusId == 1, 
    t2 => new Task {StatusId = 2});

//example of using an IQueryable as the filter for the update
var users = context.Users.Where(u => u.FirstName == "firstname");
context.Users.Update(users, u => new User {FirstName = "newfirstname"});

または、ストレート ADO.Net を使用して、ストアド プロシージャを呼び出すこともできます。

幸運を。

于 2013-01-29T02:30:46.263 に答える