当我运行系统时。每次用户访问: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());
}
}
答案 0 :(得分:1)
db.People.RemoveRange(db.People.ToList());
db.SaveChanges():
答案 1 :(得分:0)
马库斯的回答应该有效。但它的效率非常低。它在开始删除这些角色之前加载数据库中的所有行。如果有很多行,则需要花费时间从数据库中查询它们并将数据发送到数据库客户端。
对于这些类型的任务,只需使用db.Database.ExecuteSqlCommand()
对数据库运行查询。 LINQ很棒,但不是一切。
db.Database.ExecuteSqlCommand("DELETE FROM People");