从另一个列表更新列表 - 实体框架

时间:2016-07-12 10:38:34

标签: c# entity-framework linq

会议室模型

public class Room
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}

Id是此处的主键

在实体框架中,所有房间详细信息都在dbcontext

dbContext.Rooms

还有一个IList<Room> updateRooms,其中列出了几个房间的更新名称和地址。

如何使用主键dbContext.Rooms更新updateRoomsId的匹配项,并使用实体框架保存到数据库。

注意:我明白我可以在dbContext.Rooms中更新每个房间并保存如下

foreach (var room in updateRooms)
{
    dbContext.Rooms.Attach(room);
    dbContext.Entry(room).State = EntityState.Modified;
    dbContext.SaveChanges();
}

但有没有办法附上所有房间并立即保存

3 个答案:

答案 0 :(得分:2)

另一个awswer

    foreach (var room in updateRooms)
    {
        dbContext.Entry(room).State = EntityState.Modified;
    }
    dbContext.SaveChanges();

你也可以使用它。

答案 1 :(得分:1)

首先您需要找到包含Id(主键)的所有条目并更新值。然后调用SaveChanges()方法。

foreach (var room in updateRooms)
{
    var roomToUpdate = dbContext.Rooms.Find(room.Id);
    roomToUpdate.Name = room.Name;
    roomToUpdate.Address = room.Address;
}
dbContext.SaveChanges();

答案 2 :(得分:-1)

foreach(var item in updateRooms)
{
var oldModel= dbContext.Rooms.First(a => a.Id == item.Id);
 if(oldModel !=null)
{
    oldModel.Name = item.Name;
    oldModel.Address = item.Address;
    dbContext.SaveChanges();
} 

}

试试这个。