C# 不使用foreach更新整个集合的值

C# 不使用foreach更新整个集合的值,c#,entity-framework,C#,Entity Framework,我目前正在我的联系人表中循环,并使用foreach循环将他们的IsCustomer标志设置为false using (var db = new Entities(cs)) { foreach (var contact in db.Contacts) contact.IsCustomer = false; db.SaveChanges(); } 我注意到这个过程需要很长时间。有没有一种方法可以将我的所有联系人IsCustomer标记设置为false而不逐个设置?或

我目前正在我的联系人表中循环,并使用
foreach
循环将他们的
IsCustomer
标志设置为false

using (var db = new Entities(cs))
{
    foreach (var contact in db.Contacts)
        contact.IsCustomer = false;
    db.SaveChanges();
}

我注意到这个过程需要很长时间。有没有一种方法可以将我的所有联系人
IsCustomer
标记设置为false而不逐个设置?或者有没有更快的方法呢?

正如@Jeroen Vannevel所建议的那样
    using (Entities db = new Entities())
    {
        int changed = Entities.Database.ExecuteSqlCommand("Update Contact set IsCustomer = 0");
    }

这个问题有望解决你的问题

最好使用这个

但如果您不想将其添加到项目中,则
您可以使用简单的SQL语句。


正如@Jeroen Vannevel所建议的那样

这个问题有望解决你的问题

最好使用这个

但如果您不想将其添加到项目中,则
您可以使用简单的SQL语句。


正如@Jeroen Vannevel所建议的那样

这个问题有望解决你的问题

最好使用这个

但如果您不想将其添加到项目中,则
您可以使用简单的SQL语句。


正如@Jeroen Vannevel所建议的那样

这个问题有望解决你的问题

最好使用这个

但如果您不想将其添加到项目中,则
您可以使用简单的SQL语句。


出于性能原因,您可以直接执行更新查询。使用db.Database.executesQLCommand,实际的数据库更新将比更新内存中对象花费的时间高出几个数量级。在这个过程中,这一部分几乎可以忽略不计。出于性能原因,您可以直接执行更新查询。使用db.Database.executesQLCommand,实际的数据库更新将比更新内存中对象花费的时间高出几个数量级。在这个过程中,这一部分几乎可以忽略不计。出于性能原因,您可以直接执行更新查询。使用db.Database.executesQLCommand,实际的数据库更新将比更新内存中对象花费的时间高出几个数量级。在这个过程中,这一部分几乎可以忽略不计。出于性能原因,您可以直接执行更新查询。使用db.Database.executesQLCommand,实际的数据库更新将比更新内存中对象花费的时间高出几个数量级。在这个过程中,这一部分几乎可以忽略不计。
using (var context = new BloggingContext()) 
{ 
    context.Database.SqlCommand( 
        "UPDATE dbo.Blogs SET Name = 'Another Name' WHERE BlogId = 1"); 
}