Me gusta la idea de Command Query Separation pero no puedo ver cómo usarla dentro de una acción MVC Controller que agrega una entidad y necesita la ID de la nueva entidad después de agregarla.Usando el principio de separación Command-Query en Controladores MVC
Por ejemplo, en el ejemplo simplificado por debajo de un servicio se utiliza para crear un nuevo elemento:
public ActionResult Assign(AssignViewModel viewModel)
{
var newItem = _AssignItemService.AssignItem(viewModel.ItemName, viewModel.ItemValue);
return RedirectToAction("ListItem", new {id = newItem.Id);
}
Pero cuando vuelvo a dirigir a la acción que se va a mostrar el nuevo elemento, necesito saber la ID del elemento recién creado, para que pueda ser recuperado de la base de datos. Así que tengo que pedirle al servicio que devuelva el artículo recién creado (o al menos, su ID).
En CQS puro, un comando no tiene valor de retorno, por lo que el patrón anterior no sería válido.
Cualquier consejo recibido con gratitud.
¿Cómo recuperas el "artículo" más tarde? –
el objeto que se pasa al método AssignItem contiene la información Id una vez que se devuelve. Como el método es un comando, está bien cambiar el estado del objeto – jorgehmv
¿Todavía no estás devolviendo un valor en ese punto? Claro, no está saliendo por la parte de atrás de la función, pero todavía estás devolviendo un valor, solo estás presionando el valor de retorno en otro lugar. Dicho esto, me gusta la idea de mantener el ID dentro del objeto, en lugar de devolverlo por separado. –