我有Person类,它是聚合的根,这个聚合也包含国家和州的省份。
{Person,Country,StateProvince} - >人是根聚合。
// 公共人员(字符串名称,字符串国家/地区,州,{其他参数}){}
//但是现在我在UI中面临问题,我将如何填充Dropdown for Country和Stateprovince,通过人,因为它是根聚合,但我不希望任何人分配国家或州州但我想要所有国家/地区的州名列表,以便用户从中选择一个
我是否手动为country和stateprovince创建表并手动填充所有值。如果是,那么我将如何从ddd中的这些表中获取值。
答案 0 :(得分:4)
你的模特试图告诉你一些事情。
Country和StateProvince可能不是Person Aggregate的一部分。
记住聚合的非常方便的“删除测试”,问我是否删除了这个人我是否也删除了他们的国家和StateProvince?我住在加拿大,你将我从你的系统中删除你是否也要从你的系统中删除加拿大国家?
不,你不会。您的双单独聚集在这里的人与定位,其中将包括{国家,StateProvince}的总结。如果你删除一个国家,你将很可能同时删除其内部包含以及所有的州或省。< / p>仅仅因为Person引用了一个类或者 has -a 类,并没有使所有引用成为该聚合的一部分。位置在许多系统中是非常常见的聚合,并且经常站在它自己的位置。
您应该有一个人库,它利用LocationRepository并有UI直接调用LocationRepository获得位置聚集。
答案 1 :(得分:0)
您可以从不同的表格填充您所在的国家/地区和州。然后,您将填充这些表中的下拉列表。当使用已经分配了Country和StateProvince的特定Person实体时,您将通过id将它们与主表绑定。
希望有所帮助。