2015-03-23 3 views
-1
[HttpPost] 
    public ActionResult AddVotes(List<CampaignManager_tbl> list, int events_category_id, int candidates_info_id) { 

     if (ModelState.IsValid) 
     { 
      var events = db.Events_Info_tbl.Where(x => x.is_active == true).FirstOrDefault(); 
      var username = User.Identity.Name; 
      var getID = db.Account_Info_tbl.Where(x => x.username == username).FirstOrDefault(); 

      foreach (var i in list) 
      { 
       Votes_tbl vote = new Votes_tbl(); 

       vote.candidates_info_id = i.candidates_info_id; 
       vote.C_voters_info_id = getID.account_info_id; 
       vote.events_info_id = events.events_info_id; 
       vote.events_category_id = i.events_category_id; 
       vote.votes_history = true; 
       db.Votes_tbl.Add(vote); 
      } 
      db.SaveChanges(); 
      RedirectToAction("Index"); 
     } 

     return View(list); 
    } 

Это мой код, где я собираюсь сохранить данные в списке в базе данных, но он не работает. List<CampaignManager_tbl> List содержит данные, которые необходимо сохранить в файле Votes_tbl.Сохранить данные в списке в другую таблицу

Что не так с этим кодом? Как я собираюсь сохранить эти данные?

+2

Во-первых, я предлагаю переместить «db.SaveChanges();» из foreach ... не нужно экономить каждый раз, когда вы запускаете, во-вторых, какую ошибку вы получаете? –

+1

начните использовать отладчик для стартеров и поэтому не вызывайте 'db.SaveChanges()' до тех пор, пока вы не закончите обработку данных в цикле – MethodMan

+0

Ive получил эту ошибку. «DbUpdateException не был обработан кодом пользователя». – Jen143

ответ

0
[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult AddVotes(List<CampaignManager_tbl> list) 
    { 
     if (ModelState.IsValid) 
     { 
      var events = db.Events_Info_tbl.Where(x => x.is_active == true).FirstOrDefault(); 
      var username = User.Identity.Name; 
      var getID = db.Account_Info_tbl.Where(x => x.username == username).FirstOrDefault(); 

      foreach (var i in list) 
      { 
       int val = 1; 
       bool y = Convert.ToBoolean(val); 
       if (i.isSelected == y) { 
        Votes_tbl vote = new Votes_tbl(); 

        vote.candidates_info_id = i.candidates_info_id; 
        vote.C_voters_info_id = getID.account_info_id; 
        vote.events_info_id = events.events_info_id; 
        vote.events_category_id = i.events_category_id; 
        vote.votes_history = true; 
        db.Votes_tbl.Add(vote); 
       }    
      } 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 

     } 
     return View(list); 
    } 

Я пришел к этому решению, но все равно спасибо за предоставленные советы. Это помогает. Спасибо.

+0

Это мое решение lol. – Bowofola

1

Сохраните данные вне цикла.

[HttpPost] 
public ActionResult AddVotes(List<CampaignManager_tbl> list, int category_id, int candidates_info_id) { 

if (ModelState.IsValid) 
    { 
     var events = db.Events_Info_tbl.Where(x => x.is_active == true).FirstOrDefault(); 
     var username = User.Identity.Name; 
     var getID = db.Account_Info_tbl.Where(x => x.username == username).FirstOrDefault(); 

     foreach (var i in list) 
     { 
      Votes_tbl vote = new Votes_tbl(); 

      vote.candidates_info_id = i.candidates_info_id; 
      vote.C_voters_info_id = getID.account_info_id; 
      vote.events_info_id = events.events_info_id; 
      vote.events_category_id = category_id; 
      vote.votes_history = true; 
      db.Voters_Info_tbl.Add(vote); 


     } 
     db.SaveChanges(); 
     RedirectToAction("Index"); 
    } 

    return View(list); 
} 
Смежные вопросы