Проблема при вставке нескольких данных ASP.NET MVC - PullRequest
1 голос
/ 19 марта 2019

У меня проблемы при вставке нескольких записей.Когда я пытаюсь вставить 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 ]

1 голос
/ 19 марта 2019

Небольшое исправление в вашем коде.Вы создаете один модуль и обновляете его каждый раз.Таким образом, он всегда будет сохранять список последнего элемента в вашем списке последних пунктов 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();
 }
1 голос
/ 19 марта 2019

Entity Framework предлагает два метода для вставки записей в базу данных. Add() метод позволяет вставить один объект. AddRange() метод вставляет коллекцию IEnumerable. Вы можете найти больше информации от здесь .

Пример:

 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();
}
...