我尝试使用angularjs创建SPA,它允许在EF上下文中更改数据,而无需调用saveChanges(),然后保存(调用saveChanges())或取消更改。
MyController.cs
public class MyController : ApiController
{
private Oralce_dbContainer _db = new Oralce_dbContainer();
[Route("Items/{ParentId:int?}")]
public async Task<IHttpActionResult> GetItems(int? ParentId)
{
var Parent = await _db.parents.FindAsync(ParentId);
var items = Parent.Item.ToList();
return Ok(items);
}
[HttpPost]
[Route("Delete")]
public async Task<IHttpActionResult> Delete(Item item)
{
var i = await _db.Item.FirstOrDefaultAsync(x => x.id == item.id);
_db.Item.Remove(i);
return Ok(true);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_db.Dispose();
}
base.Dispose(disposing);
}
}我得到项目,然后发布,删除,并再次获得项目,我得到所有项目与删除的项目。如何保存调用控制器操作的EF上下文?
发布于 2016-08-11 01:55:36
你的Oralce_dbContainer的生命周期是针对每个请求的,所以在调用Delete并响应_db对象后,会将其释放。在同一请求中,必须在delete之后调用SaveChange。
public async Task<IHttpActionResult> Delete(Item item)
{
var i = await _db.Item.FirstOrDefaultAsync(x => x.id == item.id);
_db.Item.Remove(i);
_db.SaveChanges();
return Ok(true);
}https://stackoverflow.com/questions/38871401
复制相似问题