代码之家  ›  专栏  ›  技术社区  ›  Illep

使用LINQ更新数据库列表中的记录

  •  0
  • Illep  · 技术社区  · 8 年前

    我有一个 List<Office> ,模型在哪里 Office 包括以下内容:

    int Id
    string Name
    int doorNumber
    int officeType
    int areaCode
    

    我需要更新 列出<office> 哪里都是 areaCode 此对象的元素将更新为值 10 .

            List<Office> OfficeList =   db.Offices.Where(x => x.officeType == 1).ToListAsync();
    
            listOfRecords = listOfRecords.Select(x => new Office
            {
                Id = x.Id,
                Name = x.Name,
                doorNumber= x.doorNumber,
                officeType=x.officeType,
                areaCode = 10,
            }).ToList();
    
            db.Offices.UpdateRange(listOfRecords);
                await db.SaveChanges();
    

    我得到的错误是

    message=“无法跟踪实体类型“office”的实例 因为对'id'具有相同键值的另一个实例是 已经被跟踪。附加现有实体时,请确保 只附加一个具有给定键值的实体实例。

    1 回复  |  直到 8 年前
        1
  •  0
  •   nvoigt    8 年前

    只需更新列表并保存更改:

    List<Office> OfficeList = db.Offices.Where(x => x.officeType == 1).ToList();
    
    OfficeList.ForEach(office => office.areaCode = 10);
    
    db.SaveChanges();