首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有本地状态的Asp.net WebApi实体框架控制器

具有本地状态的Asp.net WebApi实体框架控制器
EN

Stack Overflow用户
提问于 2016-08-10 18:53:58
回答 1查看 94关注 0票数 0

我尝试使用angularjs创建SPA,它允许在EF上下文中更改数据,而无需调用saveChanges(),然后保存(调用saveChanges())或取消更改。

MyController.cs

代码语言:javascript
运行
复制
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上下文?

EN

回答 1

Stack Overflow用户

发布于 2016-08-11 01:55:36

你的Oralce_dbContainer的生命周期是针对每个请求的,所以在调用Delete并响应_db对象后,会将其释放。在同一请求中,必须在delete之后调用SaveChange。

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38871401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档