Próbuję osiągnąć coś naprawdę prostego i nie mogę znaleźć sposobu, aby to zrobić za pomocą Entity Framework 4.1.Jak uruchomić rekord w ADO.NET EF 4.1?
Chcę metodę kontrolera, który akceptuje obiekt, a następnie wykonuje UPSERT (wstawiania lub aktualizacji w zależności od tego, czy rekord istnieje w bazie danych).
Używam klucza naturalnego, więc nie ma możliwości, aby spojrzeć na moje POCO i stwierdzić, czy jest nowy, czy nie.
To jak ja to robię i wydaje się źle do mnie:
[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" });
}
}
Idealnie, cała sprawa będzie tylko coś takiego:
db.MyEntities.AddOrModify(entity);
Co się dzieje, kiedy nie tylko 'Save'? –