首页 > 解决方案 > 使用 linq 查询更新 mvc5 中的所有列记录

问题描述

我想使用 linq 查询更新 MVC5 中特定列的所有记录

var PriceRecord = db.tblPurchasePrices.Where(z => z.ID == id).SingleOrDefault();
var PurchasePriceList = db.tblPurchasePrices.Where(z => z.SizeID == PriceRecord.SizeID && z.ProductID == PriceRecord.ProductID && z.CategoryID == PriceRecord.CategoryID).ToList();

        foreach (var item in PurchasePriceList)
        {
            item.IsActive = false;
            db.SaveChanges();
        }

我不想使用 foreach 循环来一一更新记录并保存更改。我希望特定列中的所有值一次更新。

标签: asp.net-mvcentity-frameworklinq

解决方案


试试这个代码,你可以一次保存所有更改到 DB:

 foreach (var item in PurchasePriceList)
        {
            item.IsActive = false;
          db.Entry(item).State = EntityState.Modified;
         }
 db.SaveChanges();

或其他语法:

foreach (var item in PurchasePriceList)
        {
            item.IsActive = false;
          db.Entry(item).Property(i=> i.IsActive).IsModified = true;
         }
 db.SaveChanges();

另一种可能更快(可能不是)更新批量数据的方法是创建一个带有 PriceRecord 参数的存储过程并像这样执行:

db.Database.ExecuteSqlCommand("stored_procedure_name @params", params);

推荐阅读