2013-04-01 2 views
0

for 루프를 사용하여 동일한 모델을 여러 번 저장할 수 있어야합니다. My Action에는 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

이 이미 "새로운 것이 아니다"으로 판정을 받았습니다. 따라서 후속 통화에서 업데이트가 수행됩니다. 당신이해야 할 일은 각 루프에 의 새로운 인스턴스를 생성하는 것입니다 :

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

    inventoryRepository.save(entityToSave); 
} 
+0

제가 그렇게 할 때 영화가 지워집니다. – Andrew

+0

그 이전의 코멘트를 무시할 수 있습니다. 지금 당신이 의미하는 바를 봅니다. 네가 한 말을 놓쳤다. 감사! – Andrew