Я делаю это в моем контроллере:Получение Субъект и передать его в качестве параметра службы вызывает проблемы с навигацией собственности
public ActionResult EditOrder(OrderViewModel viewModel)
{
var order = _orderService.GetOrderById(viewModel.Id);
order.OrderStatus = viewModel.OrderStatus;
_orderService.UpdateOrder(order);
Return View(viewModel);
}
... и UpdateOrder() представляет собой метод в моем OrderService что выполняет следующие действия:
public bool UpdateOrder(EcommerceOrder order)
{
var dbOrder = _dbContext.EcommerceOrders.Find(order.Id);
dbOrder.OrderStatus = _dbContext.EcommerceOrderStatuses.Find(order.OrderStatus.Id);
_dbContext.SaveChanges();
return true;
}
Необъяснимо (для меня, по крайней мере), это приводит к Entity Framework, чтобы создать новую OrderStatus, а не просто установка существующего.
Однако, он хорошо работает, если я изменить мой контроллер, как это:
public ActionResult EditOrder(OrderViewModel viewModel)
{
var order = new EcommerceOrder();
order.OrderStatus = viewModel.OrderStatus;
_orderService.UpdateOrder(order);
Return View(viewModel);
}
Любая идея, почему?
Это не работает. Сущность, которую я пытаюсь сохранить, не нова. Я извлекаю Entity из контекста: var dbOrder = _dbContext.EcommerceOrders.Find (order.Id). – tocqueville