2013-04-01 94 views
0

我需要能夠使用for循環多次保存同一模型。我的操作有兩個參數,InventoryViewModel電影和int數量。例如,如果數量爲3,則需要將三份副本保存到數據庫中。MVC3多次保存模型

在我的控制,我有:

[HttpPost] 
    public ActionResult addInventory(InventoryViewModel movie, int Quantity) 
    { 
     movie.Inventory.isAvail = true; 
     if (ModelState.IsValid) 
     { 
      for (int i = 0; i < Quantity; i++) 
      { 
       inventoryRepository.save(movie.Inventory); 
       movie = new InventoryViewModel(); 
      } 
      return RedirectToAction("index"); 
     } 
     return View("index", movie); 
    } 

我想設置電影=新InventoryViewModel將創造電影的新實例,但它不工作。如果我將該行取出,則在將第一個副本添加到數據庫之後,它會碰到else語句。 CheckoutNum是表的主鍵,因此我無法在for循環中將其設置爲0。我不記得確切的錯誤,但它是關於主鍵不能修改的東西。

庫:

public void save(Inventory movie) 
    { 
     if (movie.CheckoutNum == 0) 
      db.Inventory.Add(movie); 
     else 
      db.Entry<Inventory>(movie).State = System.Data.EntityState.Modified; 

     db.SaveChanges(); 
    } 

回答

1

當你第一次保存你的實體它已經被標記爲「不新鮮」。所以在接下來的電話會做更新。你應該做的是在每個循環中創建一個Inventory的新實例:

for (int i = 0; i < Quantity; i++) 
{ 
    var entityToSave = new Inventory(); 
    // map the property values to save 

    inventoryRepository.save(entityToSave); 
} 
+0

當我這樣做時,會清除movieId。 – Andrew

+0

你可以忽略之前的評論,我明白你的意思了。我錯過了你的評論。謝謝! – Andrew