2009-04-03 24 views
5

Bir toplu iş birimindeki içeriğin, toplu birleştirme kökü üzerinden basit bir şekilde erişebildiğini gösterir misiniz? Bu kavramları yansıtmak için Toplam izinleri nasıl temsil edeceğiniz konusunda net değilim. Tia.Birleştirme toplamı yoluyla varlıklara erişme: basit örnek?

+2

zsharp - aşağıda verdiğim cevapta temizlemek istediğiniz herhangi bir şey var mı? –

cevap

7

Genel olarak bunu, Agregatın sözleşmesinde ortaya koyduğu komutlarla kaplarsınız. Örneğin, bir Sipariş Toplaması ile, GUI'nizden elde edilen verileri kullanarak OrderLines'i ekleyebilirsiniz.

// This is the Order Aggregate Root 
public class Order 
{ 
    private readonly int id; 
    private readonly Customer customer; // Customer is another Aggregate 
    private readonly IList<OrderLine> orderLines; 
    private readonly IOrderLineFactory orderLineFactory; 

    public Order(int id, Customer customer, IOrderLineFactory orderLineFactory) 
    { 
     this.id = id; 
     this.customer = customer; 
     this.orderLines = new List<OrderLine>(); 
     this.orderLineFactory = orderLineFactory; 
    } 

    public void AddOrderLine(Item item, int quantity) 
    { 
     OrderLine orderLine = orderLineFactory.Create(this, item, quantity); 
     orderLines.Add(orderLine); 
    } 
} 
+4

Bunun eski bir soru olduğunu biliyorum ama ... Modelinizde, bir OrderLine'ı güncellemek isteseydim, bunun neye benzeyeceğini .... bir public orderLines listesi olmalıydı? Ardından Siparişi/Müşteri/Sipariş Verilerini güncellemek için siparişi bir depoya iletin mi? – Craig

+0

@Craig yukarıdaki sorudaki herhangi bir şans? Gerçekten aynı şeyle gerçekten uğraşıyorum. Bir kümelenmiş kök içindeki iç içe varlıklar hakkında nasıl güncelleme yapılır? – Sudarshan

+0

@Sudarshan Tüm erişim toplam kökten geçmelidir - yani hayır, bir genel sipariş satırı listesi olmamalıdır. Buna izin vermek için toplu kök üzerinde bir yöntem göstermeniz gerekir. –