Tôi đang cố gắng thực hiện điều gì đó thật sự đơn giản và tôi không thể tìm thấy cách thực hiện bằng cách sử dụng Entity Framework 4.1.Tôi làm cách nào để upsert một bản ghi trong ADO.NET EF 4.1?
Tôi muốn một phương pháp điều khiển chấp nhận một đối tượng và sau đó thực hiện một UPSERT (hoặc chèn hoặc cập nhật tùy thuộc vào việc bản ghi có tồn tại trong cơ sở dữ liệu) hay không.
Tôi đang sử dụng khóa tự nhiên, vì vậy không có cách nào để tôi xem POCO của mình và cho biết đó có phải là mới hay không.
Đây là cách tôi làm việc đó, và có vẻ như không đúng với tôi:
[HttpPost]
public JsonResult SaveMyEntity(MyEntity entity)
{
MyContainer db = new MyContainer(); // DbContext
if (ModelState.IsValid)
{
var existing =
db.MyEntitys.Find(entity.MyKey);
if (existing == null)
{
db.MyEntitys.Add(entity);
}
else
{
existing.A = entity.A;
existing.B = entity.B;
db.Entry(existing).State = EntityState.Modified;
}
db.SaveChanges();
return Json(new { Result = "Success" });
}
}
Lý tưởng nhất, toàn bộ điều chỉ sẽ là một cái gì đó như thế này:
db.MyEntities.AddOrModify(entity);
gì xảy ra khi bạn làm chỉ 'Save'? –