Ostatnio postanowiłem napisać aplikację bez stosowania CQRS na handlerach
. Okazało się jednak, że moje klasy odpowiadające za dokonywanie operacji zapisu do bazy: CustomerStore
i CartStore
są od siebie zależne. W moim przypadku chcę, aby po uzupełnieniu danych klienta został utworzony dla niego koszyk. Oznacza to, że CustomerStore
potrzebuje referencji do CartStore
. Tylko że jeśli zacznę wiązać tego typu klasy referencjami, to szybko dostanę jakieś circular reference
. Poza tym mam wrażenie, że te klasy po prostu powinny być od siebie niezależne. Jak sobie z tym poradzić?
public class CustomerStore
{
// ...
public async Task<Result> CompleteAsync(CompleteCustomerModel model)
{
var customer = await dbContext.Customers.FindAsync(model.CustomerId);
if (customer == null)
return new Result(ErrorName.NotValid, "Customer does not exist.");
customer.FirstName = model.FirstName;
customer.LastName = model.LastName;
customer.Address = model.Address;
customer.CompletedAt = DateTime.Now;
await dbContext.SaveChangesAsync();
// TODO Create cart
return Result.SuccessfulResult;
}
public class CartStore
{
// ...
public async Task<Result> CreateAsync(string customerId)
{
dbContext.Carts.Add(new Cart { CartId = customerId });
await dbContext.SaveChangesAsync();
return Result.SuccessfulResult;
}
}