我喜歡Command Query Separation的想法,但無法看到如何在添加實體的MVC Controller操作中使用它,並且在添加它之後需要新實體的ID。在MVC控制器中使用命令查詢分離原理
例如,在服務下面的簡單的例子來創建一個新項目:
public ActionResult Assign(AssignViewModel viewModel)
{
var newItem = _AssignItemService.AssignItem(viewModel.ItemName, viewModel.ItemValue);
return RedirectToAction("ListItem", new {id = newItem.Id);
}
但是,當我重定向到這是會顯示新項目的動作,我需要知道新創建的項目的ID,以便它可以從數據庫中檢索。所以我必須要求服務返回新創建的項目(或者至少是它的ID)。
在純CQS中,一個命令沒有返回值,所以上面的模式將是無效的。
任何建議感激地收到。
以後如何檢索「item」? –
傳遞給AssignItem方法的對象返回後會包含Id信息。由於該方法是一個命令,所以可以改變對象的狀態 – jorgehmv
你不是基本上還在那個時候返回一個值嗎?當然,它不是從函數的後面出來的,但是你仍然返回一個值,你只是將返回值推到別的地方。也就是說,我喜歡將ID保留在對象內的想法,而不是單獨返回。 –