Supongamos que tenemos un servicio que llama un proceso comercial. Este proceso llamará a la capa de datos para crear un objeto de tipo A en la base de datos.
Luego necesitamos llamar nuevamente a otra clase de la capa de datos para crear una instancia de tipo B en la base de datos. Necesitamos pasar alguna información sobre A para una clave foránea.
En el primer método creamos un objeto (modificar estado) y devolvemos su ID (consulta) en un solo método.
En el segundo método tenemos dos métodos, uno (createA) para guardar y el otro (getId) para la consulta.
public void FirstMethod(Info info)
{
var id = firstRepository.createA(info);
secondRepository.createB(id);
}
public void SecondMethod(Info info)
{
firstRepository.createA(info);
var key = firstRepository.getID(info);
secondRepository.createB(key);
}
Según tengo entendido, el segundo método sigue la separación de consulta de comando más completamente. Pero me parece un desperdicio y contra intuitivo consultar la base de datos para obtener el objeto que acabamos de crear.
¿Cómo conciliar CQS con tal escenario?
¿Solo el segundo método sigue CQS y si es así, es preferible usarlo en este caso?