在数据库asp.net mvc中插入多个新记录

时间:2017-07-14 18:25:17

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

我有一个非常简单的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中制作的,我的代码是数据库优先,我使用Entity框架连接它

1 个答案:

答案 0 :(得分:3)

简短的回答是否定的 - 你无法消除迭代来创建X个项目。您可以重写代码以在技术上消除for循环,但在幕后,您仍然必须使用某种迭代器来创建对象。

只要您在循环外部只调用SaveChanges(),就不会发现此方法存在任何重大性能问题。即使你使用for循环,这最终会产生一个SQL Insert语句,它将在一次数据库中创建所有记录(技术上可能是两次获取版本和事物,但一次用于查询)。