我目前正在尝试发现聚合根及其与存储库之间关系的想法。
给出以下域实体:
public class Country {
public string Name { get; set; }
public ICollection<City> Cities { get; set; }
}
public class City {
public string Name { get; set; }
}
我猜我正确地将国家/地区标识为城市的总根,因为在我的域中,不应有不在国家/地区内的任何城市。只能通过一个国家/地区将一个新城市添加到数据存储中,如果删除了一个国家/地区,则里面的每个城市也都应被移除。
现在,这样的国家/地区存储库可能是什么样子?以及如何在国家聚合根是什么样子?域中是否有CityRepository(即使没有相关国家,这也允许我向数据库中添加城市!)?并且在国家内部是否存在CountryRepository(以某种方式该国家需要填充其城市?还是这是存储库的工作?)
我认为您掌握了它。在您描述的情况下:
因为在我的领域内,不应有一个国家/地区以外的任何城市。只能通过一个国家/地区将新城市添加到数据存储中,如果删除了一个国家/地区,则也应移除其中的每个城市
您是正确的,国家是总根。您所在的国家/地区实体代码是汇总根,它是正确的!您不想要城市回购。您所在国家/地区的repo并不会真正根据相关的价值对象(在这种情况下为城市)或实体而变化,因此在这种情况下,您的基本Crud API如下所示:
public class CountryRepo {
public Country GetCountry(String name);
public Country SaveCourntry(Country country);
public void DeleteCourntry(Country country);
...etc...
}
触摸最后一个问题:
并且在国家内部是否存在CountryRepository(以某种方式该国家需要填充其城市?还是这是存储库的工作?)
您的存储库将处理活动(实体的处理)。可以通过维护集合在实体中完成城市填充。您可以在“国家/地区”实体上添加城市的方法:
public void AddCity(City city)
{
this.Cities.Add(city);
}
删除将是类似的,那么您可以使用您的存储库来保存国家/地区,该国家/地区应保留相应的城市集合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句