一段时间以来,我正在阅读有关DDD模式的信息。我觉得它真的很有用,但是我有一个让我感到好奇的问题。假设我有一个示例域:
public class StockItem : IEntity<int>, IAggregateRoot
{
public int Id { get; set; }
public string ArticleId { get; set; }
public string LocationId { get; set; }
public double Weight { get; set; }
public virtual Article Article { get; set; }
public virtual Location Location { get; set; }
private StockItem()
{
}
public StockItem(Article article, Location location, double weight, WarehouseProcedure sourceProcedure, StockItemCode[] codes)
{
this.Article = article;
this.Location = location;
this.Weight = weight;
}
public void Move(Location destination)
{
this.Location = destination;
}
}
由于Stockitem是一个聚合根,所以我可以对股票执行很多操作,即使用Move(Location newLocation)方法移动到另一个位置
我已经阅读了有关采用IAggreateRoot类型的通用存储库的信息。这不起作用,因为我不知道是否创建新的StockItem位置事件。当持久性中不存在位置时,我必须创建一个位置,然后将其作为新StockItem的构造函数传递。
但是,系统中需要创建许多新的位置。由于StockItem不负责创建库存。我在哪里放置创建位置的逻辑?在此scanerio中,我是否只是在任何服务/应用程序控制器中创建位置,而不关心该位置? DDD模式呢?