我知道要更新EF中的对象,我可以执行以下操作...

var hotel = context.Hotels.SingleOrDefault(u => u.HotelID == editedHotel.HotelID);
    hotel.Name= editedHotel.Name;
    hotel.Address = editedHotel.Address;
    hotel.RoomCount = editedHotel.RoomCount;
context.SaveChanges();


但是,如果许多字段需要更新,这将花费很长时间。

有什么办法可以做...

    var hotel = context.Hotels.SingleOrDefault(u => u.HotelID == editedHotel.HotelID);
hotel = editedHotel;
context.SaveChanges();


...因此所有字段都可以一口气更改?

最佳答案

怎么样...

var cachedHotel = context.Hotels.Local
    .FirstOrDefault(h => h.id = editedHotel.id);
if (cachedHotel != null)
{
  context.Hotels.Detach(cachedHotel);
}
context.Hotels.Attach(editedHotel);
context.Entry(editedHotel).State = System.Data.EntityState.Modified;
context.SaveChanges();

关于c# - 从对象更新EF,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13091029/

10-09 15:53