0
我是CQRS & DDD的新手,对于我正在使用MS WideWorldImporters数据库的练习,此刻我陷于采购订单放置命令,说实话我不知道它应该如何显示你能指导我吗? 我应该有1个PlaceOrderCommand和处理程序应该使用它来创建PurchaseOrder填充它的OrderLines并保存。如果是,如何命令应该是时域模型的样子:CQRS&PurchaseOrder AggregateRoot
样品域模型:
public class PurchaseOrder : AggregateRoot<int>
{
private PurchaseOrder(int id, int supplierID, DateTime orderDate, int deliveryMethodID, int contactPersonID) : base(id)
{
SupplierID = supplierID;
OrderDate = orderDate;
DeliveryMethodID = deliveryMethodID;
ContactPersonID = contactPersonID;
}
public List<PurchaseOrderLine> PurchaseOrderLines { get; private set; }
public int SupplierID { get; private set; }
public DateTime OrderDate { get; private set; }
public int DeliveryMethodID { get; private set; }
public int ContactPersonID { get; private set; }
public static PurchaseOrder CreatePurchaseOrder(int supplierID, int deliveryMethodID, int contactPersonID)
{
return new PurchaseOrder(1, supplierID, DateTime.Now, deliveryMethodID, contactPersonID);
}
public void AddPurchaseOrderLine(int stockItemID)
{
PurchaseOrderLines.Add(new PurchaseOrderLine(this.Id, stockItemID));
}
}
样品命令处理程序:
public class PurchaseOrdersCommandHandler :
ICommandHandler<PlacePurchaseOrder>
{
private readonly IPurchaseOrderRepository purchaseOrderRepository;
public PurchaseOrdersCommandHandler(IPurchaseOrderRepository purchaseOrderRepository)
{
this.purchaseOrderRepository = purchaseOrderRepository;
}
public void Handle(PlacePurchaseOrder command)
{
// TODO: based on command Create Purchase order with its line items and save it to db as a whole
}
}
命令参数可以是对象引用吗? – QuietNaN
如果它只是一个整数列表,我不明白为什么不。 – tomliversidge
我试图避免命令中的大型嵌套对象图作为一般指导,但如果有一个int表来表示采购订单行项目匹配业务流程,那么我认为这很好:) – tomliversidge