【发布时间】:2011-06-28 17:52:14
【问题描述】:
我正在尝试完成一些非常简单的事情,但我找不到使用 Entity Framework 4.1 的方法。
我想要一个控制器方法,它接受一个对象,然后执行 UPSERT(插入或更新,具体取决于数据库中是否存在记录)。
我使用的是自然密钥,所以我无法查看我的 POCO 并判断它是否是新的。
这就是我的做法,但对我来说似乎是错误的:
[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" });
}
}
理想情况下,整个事情应该是这样的:
db.MyEntities.AddOrModify(entity);
【问题讨论】:
-
只做
Save会发生什么?