C# 如何使用ApplyCurrentValue更新整个实体列表?

C# 如何使用ApplyCurrentValue更新整个实体列表?,c#,sql,entity-framework,C#,Sql,Entity Framework,嗯 以下是我如何更新单个对象: public void UpdateRespondent(Respondent changed) { var respondent = db.Respondents.FirstOrDefault(r => r.RespondentId == changed.RespondentId); db.Respondents.ApplyCurrentValues(changed); db.SaveChanges(); } 如果发生更改,这将

以下是我如何更新单个对象:

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

    db.Respondents.ApplyCurrentValues(changed);
    db.SaveChanges();
}
如果发生更改,这将调用1 select和1 update

现在,如果我有一个包含数百个的列表,我该怎么做,在循环中的每个列表上调用UpdateRespondentchanged?这将导致数百个*2 sql语句

还是有更有效的方法


谢谢。

EF不支持批量更新。您可以研究EntityFramework扩展库的使用—我见过其他成功使用它的人:

上面链接中的代码sniplet:

//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并调用存储的proceudre


祝你好运。

谢谢,伙计,我会看看的。