c# – SaveChangesAsync不更新数据库表中的值

前端之家收集整理的这篇文章主要介绍了c# – SaveChangesAsync不更新数据库表中的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的表:统计数据
Id,Depth,RefreshCounter

样本记录:

Id    Depth      RefreshCounter
 1     1           1
 2     1           0
 3     1           0
 4     1           0

现在我需要做的是每当我刷新页面时,我需要在深度为1的数据库表中将此refreshcounter值增加1.

我在加载浏览页面调用方法

@Html.Action("IncrementRefreshcounter","Statistics",new { id = 1})  //for eg:1,2,3,4

这是我的代码,它执行此操作:

[ChildActionOnly]
    public ActionResult IncrementRefreshcounter(int id)
       {
         using ( var context = new MyDBContext())
         {
//at each page refresh i would be passing different id to my controller from view.for eg 1,4
         var data=context.Statistics.where(x=>x.Depth==1 && r.Id==id).FirstorDefualt();
             context.RefreshCounter++;//Increment here RefreshCounter.
             context.SaveChangesAsync();
             return PartialView("xxx")
            }
        }

当我的View Loads.Problem是我第一次运行我的应用程序并调用方法时,我正在调用方法,它成功地将RefreshCounter更新为1,但之后每当我刷新页面调用方法时,它永远不会更新任何具有深度的记录的RefreshCounter = 1.

在我的示例记录中,您可以看到Id 1 with Depth 1具有值为1的刷新计数器,因为这是我第一次运行我的应用程序并且它已成功更新该值但在此之后它永远不会更新任何值,例如: Id 2深度1

它只递增1次RefreshCounter,但之后它永远不会增加该变量.

谁能告诉我什么问题是SaveChangesAsync?

解决方法

您必须等待保存,否则方法将继续,并且在保存更改之前,您的上下文将超出范围.您还必须使该方法异步.
public **async** Task<ActionResult> IncrementRefreshcounter(int id)
       {
         using ( var context = new MyDBContext())
         {
//at each page refresh i would be passing different id to my controller from view.for eg 1,4
         var data=context.Statistics.where(x=>x.Depth==1 && r.Id==id).FirstorDefualt();
             context.RefreshCounter++;//Increment here RefreshCounter.
             await context.SaveChangesAsync();
            }
        }
原文链接:https://www.f2er.com/csharp/98855.html

猜你在找的C#相关文章