从C#中的MVC5中删除System.Data.Entity中的所有行

时间:2017-12-17 21:01:07

标签: c# asp.net asp.net-mvc rest api

当我运行系统时。每次用户访问:http://localhost:54619/People/Index时,我希望从数据库中删除所有日期,然后添加新数据。

然而,我找不到办法解决这个问题。

正在从Json文件中读取记录,然后将其添加到数据库中。

    // GET: People
    public ActionResult Index()
    {
        if (db.People.Count() > 0)
        {
            int NumRows = db.People.Count();
            for (int i = 0; i < NumRows; i++)
            {
                Person person = db.People.Find(i+1);
                db.People.Remove(person);
                db.SaveChanges();
            }
            string Json = System.IO.File.ReadAllText(@"C:\Users\Alex\Desktop\Output.json");
            JavaScriptSerializer ser = new JavaScriptSerializer();
            var personlist = ser.Deserialize<List<Person>>(Json);
            db.People.AddRange(personlist);
            db.SaveChanges();
            //return RedirectToAction("Index");
            return View(db.People.ToList());
        }
        else
        {
            string Json = System.IO.File.ReadAllText(@"C:\Users\Alex\Desktop\Output.json");
            JavaScriptSerializer ser = new JavaScriptSerializer();
            var personlist = ser.Deserialize<List<Person>>(Json);
            db.People.AddRange(personlist);
            db.SaveChanges();
            return View(db.People.ToList());
        }

    }

2 个答案:

答案 0 :(得分:1)

db.People.RemoveRange(db.People.ToList());
db.SaveChanges():

答案 1 :(得分:0)

马库斯的回答应该有效。但它的效率非常低。它在开始删除这些角色之前加载数据库中的所有行。如果有很多行,则需要花费时间从数据库中查询它们并将数据发送到数据库客户端。

对于这些类型的任务,只需使用db.Database.ExecuteSqlCommand()对数据库运行查询。 LINQ很棒,但不是一切。

db.Database.ExecuteSqlCommand("DELETE FROM People");