【问题标题】:Update db record in foreach loop with Entity Framework in asp.net mvc 6使用asp.net mvc 6中的实体框架更新foreach循环中的数据库记录
【发布时间】:2016-07-06 22:57:25
【问题描述】:

我知道有类似的问题,但就我而言,有些问题。只是试图更新每一行,但由于某种原因它什么也没做,也没有错误。

谢谢。

public ActionResult Index()
{
    using (var db = new DoskaUsContext())
    {
        foreach (var category in db.Categories)
        {
            category.Count = 25;
            db.Categories.Attach(category);
            db.Entry(category).State = EntityState.Modified;
        }

        db.SaveChanges();

        return View();               
    }
}

【问题讨论】:

  • 不需要“attach”和“state”行,因为在此示例中实体已附加。
  • 很遗憾,它不起作用
  • 您是否能够运行 SQL Profiler 以查看是否/什么正在访问数据库?
  • 对不起,这是我的愚蠢错误,我忘了更新实体模型。一切都适用于下面的代码。

标签: c# asp.net asp.net-mvc entity-framework entity-framework-6


【解决方案1】:
//3. Mark entity as modified
db.Entry(Category).State = System.Data.Entity.EntityState.Modified;     

//4. out side for loop call SaveChanges
db.SaveChanges();

有效。

【讨论】:

    【解决方案2】:

    您可以尝试以下方法,我还没有测试过:

    public ActionResult Index(Categories category)
        {
    
            using (var db = new DoskaUsContext())
            {
                foreach (var cat in category)
                {
                    category.Count = 25;
                    db.Entry(category).State = EntityState.Modified;
                }
    
                db.SaveChanges();
                return View();               
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多