插入多个数据ASP.NET MVC时出现问题

时间:2019-03-19 03:30:20

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

插入多个记录时遇到麻烦。当我尝试插入2条记录时,调试器将显示2条记录,但只保存1条记录。

这是我在经理班级中的代码

public void Create(IEnumerable<CollectionModel> p )
{
    collection module = new collection();
    foreach (var asa in p)
    {               
        module.AccountId = 1;
        module.Amount = asa.Amount;
        module.NameSou = asa.NameSou;
        module.Date = asa.Date;
        module.CreatedDatetime = DateTime.Now;
        module.UpdatedDatetime = DateTime.Now;

        _context.collection.Add(module);
    }
    _context.SaveChanges();
}

2 个答案:

答案 0 :(得分:1)

实体框架提供了两种将记录插入数据库的方法。 Add()方法允许插入单个实体。 AddRange()方法插入一个IEnumerable集合。您可以从here中找到更多信息。

示例:

 public void Create(IEnumerable<CollectionModel> args )
 {
    var modules = args.Select(asa=> new collection{
       AccountId = 1,
       Amount = asa.Amount,
       NameSou = asa.NameSou,
       Date = asa.Date,
       CreatedDatetime = DateTime.Now,
       UpdatedDatetime = DateTime.Now
      }).ToList(); 
    _context.collection.AddRange(modules);
   _context.SaveChanges();
}

答案 1 :(得分:1)

您的代码中的小校正。您正在创建一个模块,并每次都对其进行更新。因此,它将始终将最后一项的列表保存在p的最后一项的案例列表中。

 public void Create(IEnumerable<CollectionModel> p )
 {
   foreach (var asa in p)
     {   
       collection module = new collection();            
       module.AccountId = 1;
       module.Amount = asa.Amount;
       module.NameSou = asa.NameSou;
       module.Date = asa.Date;
       module.CreatedDatetime = DateTime.Now;
       module.UpdatedDatetime = DateTime.Now;

      _context.collection.Add(module);
    }
   _context.SaveChanges();
 }