2012-11-06 95 views
3

我在asp.net mvc 3中有一個小項目,我使用RavenDB來存儲數據。 但是,當我試圖更新實體我有錯誤說 「試圖將不同的對象ID爲關聯的訂單/ 257'」 我有一個服務類家政實體。RavenDB與asp.net mvc更新問題

這是更新名爲Order的實體的方法。 心中已經省略清晰

public ErrorState UpdateOrder(Order order) 
    { 
     try 
     { 
      documentSession.Store(order); 
      documentSession.SaveChanges(); 
      return new ErrorState { Success = true }; 

     } 
     catch (Exception ex) 
     { 
      return new ErrorState { Success = false, ExceptionMessage = ex.Message }; 

     } 
    } 

的方法baceuse其餘這是OrderRepository

private readonly IDocumentSession documentSession; 

public OrderRepository(IDocumentSession _documentSession) 
{ 
    documentSession = _documentSession; 
} 

ErrorState類是menagege錯誤的應用休息,它包含布爾成功和異常的字符串信息。

這是我的編輯操作。

public ActionResult Edit(int id) 
     { 
      Order order = orderRepository.ObtainOrder(id); 
      if (order == null) 
      { 
       TempData["message"] = string.Format("Order no: {0} not found", id); 
       return RedirectToAction("Index"); 
      } 
      return View(order); 

     } 



     [HttpPost] 
     public ActionResult Edit(Order order) 
     { 
      if(!ModelState.IsValid) 
       return View(); 

      errorState = orderRepository.UpdateOrder(order); 
      if (errorState.Success) 
      { 
       TempData["message"] = string.Format("Order no: {0} has been changed", order.Id); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       TempData["Message"] = string.Format("Error on update order no: {0} MSG: {1}", order.Id,errorState.ExceptionMessage); 
       return RedirectToAction("Index"); 
      } 


     } 

這是控制器的其餘部分,我忽略了清晰度的其他操作。

private readonly IOrderRepository orderRepository; 
private ErrorState errorState; 

public HomeController(IOrderRepository _orderRepository,IDocumentSession _documentSession) 
{ 
    orderRepository = _orderRepository; 

} 

回答

1

你已經有一個ID的順序的一個實例。 檢查會話生存期,是否有可能跨請求具有相同的會話?

+0

感謝您的回覆。 – Konrad

+0

是的,我有跨請求相同的會話,這意味着如果我重新調整應用程序數據庫包含我輸入的所有條目。 – Konrad

+0

我的會話在請求範圍內 – Konrad