mvc如何使用EF的AsNoTracking()

.Net技术 码拜 9年前 (2015-02-15) 1365次浏览 0个评论

为了保证数据库更新页面也能同步更新,我在db.database.tolist()中变成了db.database.AsNoTracking().tolist();
可是问题来了,如果不是tolist()型的,如:
public ActionResult TextView(int id = 0)
        {
            TableText tabletext = db.tbText.Find(id);
           db.SaveChanges();
            if (tabletext == null)
            {
                return HttpNotFound();
            }
            return View(tabletext);
        }
怎么加AsNoTracking呢?

 
mvc如何使用EF的AsNoTracking()
10分
这不是AsNoTracking的问题,而是EF的DbContext的误用。DbContext应该是每次需要时都用新的,这时使用AsNoTracking一般是为了提高查询性能,而不是为了不使用缓存数据。如果需要不缓存查询单个数据,就是 AsNoTracking 后 First / FirstOrDefault。
mvc如何使用EF的AsNoTracking()
30分
TableText tabletext = db.tbText.Find(id);
改成
TableText tabletext = db.tbText.AsNoTracking().ToList().Find(m => m.ID == id);
这样应该不报错吧.
至于数据模型缓存更新,我也一知半解.
mvc如何使用EF的AsNoTracking()
可以,先这样做吧,发现好办法再说.

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mvc如何使用EF的AsNoTracking()
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!