如何在较短的时间内使用实体框架同时编辑1000条记录

时间:2018-11-18 18:04:33

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

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中的时间复杂度?

2 个答案:

答案 0 :(得分:2)

有一个非常有用的Entity Framework Extension,网址为 https://entityframework-extensions.net/

它也可以作为nuget包提供。该扩展程序为您提供批量更新和插入内容,并且效果很好。

可以从软件包管理器窗口Install-Package Z.EntityFramework.Extensions

使用此命令安装nuget软件包。

上面的软件包现在看来是商业软件包,但我知道那里有一些类似的扩展库也可以做同样的事情。

答案 1 :(得分:0)

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

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