熟悉DDD基础

时间:2018-08-01 18:50:15

标签: domain-driven-design

一段时间以来,我正在阅读有关DDD模式的信息。我觉得它真的很有用,但是我有一个让我感到好奇的问题。假设我有一个示例域:

enter image description here

   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模式呢?

0 个答案:

没有答案