DDD ile başlıyorum ve uluslar arası tutarlılığı sağlamak için toplam köklerin kullanıldığını anlıyorum. Bir uygulama hizmetinde birden fazla toplama değiştirmemeliyiz.
Ancak aşağıdaki durumla nasıl başa çıkacağımı bilmek istiyorum.
Ürünler adlı toplu bir köküm var.
Grup adı verilen bir toplu kök de vardır.
Her ikisinin de kimliği vardır ve bağımsız olarak düzenlenebilir.
Birden Çok Ürün aynı Gruba işaret edebilir.
Bir ürünün grubunu değiştirebilecek bir uygulama hizmetim var:
ProductService.ChangeProductGroup(string productId, string groupId)
- Kontrol grubu var
- Depodan ürün al
- Grubunu ayarla
- Ürünü depoya geri yaz
Ayrıca grup silinebilir bir uygulama hizmeti var:
GroupService.DeleteGroup(string groupId)
1. groupId sağlanan groupId olarak ayarlanmış depodan ürün alın, sayımın 0 olduğundan emin olun veya iptal edin 2. Grubu grup havuzundan grubu silin 3. Değişiklikleri kaydedin
Sorum şu senaryo, ne olur:
ProductService.ChangeProductGroup'ta grubun var olduğunu (varsa) kontrol ederiz, ardından bu kontrolün hemen ardından ayrı bir kullanıcı productGroup'u siler (diğer GroupService.DeleteGroup aracılığıyla). Bu durumda, yeni silinen bir ürüne bir referans belirledik mi?
Bu farklı bir etki alanı tasarımı (gerekirse ek öğeler ekleme) kullanmalıyım ki tasarımımda bir kusur mu, yoksa işlemleri kullanmak zorunda mıyım?