2015-06-30 18 views
10

Tôi đang sử dụng EF với API WEB. Tôi có một phương pháp PUT để cập nhật một thực thể đã có trong db. Ngay bây giờ tôi có điều này:EntityFramework với API WEB, cập nhật tất cả các thuộc tính

 // PUT api/fleet/5 
     public void Put(Fleet fleet) 
     { 
      Fleet dbFleet = db.Fleets.Find(fleet.FleetId); 
      dbFleet.Name = fleet.Name; 
      dbFleet.xy= fleet.xy; 
      //and so on.... 
      db.SaveChanges(); 
     } 

Nhưng tôi lười biếng và chỉ muốn viết một cái gì đó như:

dbFleet.update(fleet); 

Vì vậy, tôi không cần phải cập nhật mỗi tài sản bằng cách riêng của mình.

Tôi chắc chắn có một cách nhưng tôi chỉ có thể tìm câu trả lời về cách thực hiện điều này với MVC nhưng không phải khi sử dụng API WEB và không nhận trạng thái mô hình.

Cảm ơn

Trả lời

8

Chỉ cần tìm thấy câu trả lời ...

// PUT api/fleet/5 
public void Put(Fleet fleet) 
{ 
    db.Entry(fleet).State = EntityState.Modified; 
    db.SaveChanges(); 
} 

Chỉ có điều tôi không hài lòng với là nó không cập nhật đối tượng trẻ em. Hạm đội có FleetAttributes không được cập nhật như thế này. Nhưng tôi đoán tôi có thể dễ dàng lặp họ ...

EDIT làm việc này cho tôi:

// PUT api/fleet/5 
public void Put(Fleet fleet) 
{ 
    db.Entry(fleet).State = EntityState.Modified; 
    foreach (var item in fleet.FleetAttributes) 
    { 
     db.Entry(item).State = EntityState.Modified; 
    } 
    db.SaveChanges(); 
} 
+0

Nice! Tôi cũng bị kẹt khi cập nhật đối tượng con. Bạn đã làm rất tốt. Cảm ơn. – Imon

14
db.Fleets.Attach(fleet); 
db.Entry(fleet).State = EntityState.Modified; 
db.SaveChanges(); 
Các vấn đề liên quan