0

行,

这是我更新单个对象的方法:

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 扩展库——我见过其他成功使用它的人:

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 回答