【发布时间】:2017-07-14 18:25:16
【问题描述】:
我有一个非常简单的 ActionResult 函数,从我的视图中调用它并从中接收一个数字,我想在我的数据库中添加这么多与该数字相等的新行,我填写的唯一列是 id它相关的形成,这是我现在的代码
public ActionResult AddInfo(int? idfrm,int? NumberToAdd)
{
using (InscriptionFormationEntities dbm = new InscriptionFormationEntities())
{
for(int i=0;i<NumberToAdd;i++)
{
INSC_MoreInfo NewEntry= new INSC_MoreInfo ();
NewEntry.idformation = idfrm;
dbm.INSC_MoreInfo .Add(info);
}
dbm.SaveChanges();
}
return View(idfrm);
}
上面的代码完美运行,但我想知道是否有一种方法可以在不依赖 for 循环的情况下达到相同的结果,因为如果要创建的新条目的数量非常大(它可以在这种情况下很好)
**注意:**我的项目是用asp.net mvc 5制作的,我的代码是数据库优先的,我使用实体框架来连接它
【问题讨论】:
-
为什么会慢?找到做你正在做的事情。
-
@CodingYoshi 因为如果我必须添加 1000000 个新条目,我的循环将创建一个新实例并每次都添加它
-
您可以用
AddRange调用替换for循环,但我认为这无关紧要,因为最慢的部分是将记录插入数据库(当您调用SaveChanges时)因为 EF 不支持批量插入。 -
@IvanStoev 是的,我尝试进行批量插入,但似乎实体框架本身不支持它
标签: c# asp.net-mvc entity-framework asp.net-mvc-5