コマンドクエリ分離のアイデアは気に入っていますが、エンティティを追加しているMVCコントローラーアクション内でそれを使用する方法がわかりません。追加後に新しいエンティティのIDが必要になります。
たとえば、以下の簡略化された例では、サービスを使用して新しいアイテムを作成します。
public ActionResult Assign(AssignViewModel viewModel)
{
var newItem = _AssignItemService.AssignItem(viewModel.ItemName, viewModel.ItemValue);
return RedirectToAction("ListItem", new {id = newItem.Id);
}
ただし、新しいアイテムを表示するアクションにリダイレクトするときは、データベースから取得できるように、新しく作成されたアイテムのIDを知る必要があります。そのため、新しく作成されたアイテム(または少なくともそのID)を返すようにサービスに依頼する必要があります。
純粋なCQSでは、コマンドには戻り値がないため、上記のパターンは無効になります。
どんなアドバイスもありがたく受けました。