【问题标题】:How to edit 1000 records at time using entity framework in less time如何在更短的时间内使用实体框架一次编辑 1000 条记录
【发布时间】:2019-04-21 04:22:28
【问题描述】:
public ActionResult EditRow()
{
        using (SchoolContext db = new SchoolContext())
        {
            var v = db.Students.ToList();
            return View(v);
        }
}

[HttpPost]
public ActionResult EditRow(List<Student> student)
{
        if (ModelState.IsValid)
        {
            using (SchoolContext db = new SchoolContext())
            {
                foreach (var i in student)
                {
                    var c = db.Students.Where(a => a.ID.Equals(i.ID)).FirstOrDefault();
                    if (c != null)
                    {
                        c.LastName = i.LastName;
                        c.FirstMidName = i.FirstMidName;
                        c.EnrollmentDate = i.EnrollmentDate;
                    }
                }
                db.SaveChanges();
                return RedirectToAction("Index");

            }
            ViewBag.Message = "Successfully updated";
            return View(student);

        }
        else
        {
            ViewBag.Message = "failed";
            return View(student);
}

现在我已经实现了这段代码,但是服务器需要更多时间来编辑记录。有什么方法可以快速编辑记录吗? 如何最大限度地减少执行时间? 以及如何在 Visual Studio 中检查时间复杂度?

【问题讨论】:

  • 您能否制作一个 ID 列表,然后加载该列表中具有 ID 的所有学生,而不是单独加载每个学生?然后遍历该内存列表进行更新

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


【解决方案1】:

有一个非常有用的实体框架扩展可在 https://entityframework-extensions.net/

它也可以作为 nuget 包使用。此扩展为您提供批量更新和插入功能,效果非常好。

可以在包管理器窗口Install-Package Z.EntityFramework.Extensions使用此命令安装nuget包

上述软件包现在似乎是一个商业软件包,但我知道有一些类似的扩展库可以做同样的事情。

【讨论】:

    【解决方案2】:

    我认为这个问题已经回答了。如果您搜索诸如“ef 批量更新”之类的关键字,则有很多明确的答案如何做。

    这是使用时的一个已知问题,例如实体框架 6。如上所述@John S 已经提到您可以使用扩展库进行批量更新。我不确定您在这种情况下的“时间复杂度”是什么意思。如果您使用 OR 映射器,则无论如何都应该分析您的 SQL 语句,e.g. SQL Profiler

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多