在UI中的下拉列表中填充VO

时间:2011-03-24 10:45:38

标签: domain-driven-design

我有Person类,它是聚合的根,这个聚合也包含国家和州的省份。

{Person,Country,StateProvince} - >人是根聚合。

// 公共人员(字符串名称,字符串国家/地区,州,{其他参数}){}

//但是现在我在UI中面临问题,我将如何填充Dropdown for Country和Stateprovince,通过人,因为它是根聚合,但我不希望任何人分配国家或州州但我想要所有国家/地区的州名列表,以便用户从中选择一个

我是否手动为country和stateprovince创建表并手动填充所有值。如果是,那么我将如何从ddd中的这些表中获取值。

2 个答案:

答案 0 :(得分:4)

你的模特试图告诉你一些事情。

  

Country和StateProvince可能不是Person Aggregate的一部分。

记住聚合的非常方便的“删除测试”,问我是否删除了这个人我是否也删除了他们的国家和StateProvince?我住在加拿大,你将我从你的系统中删除你是否也要从你的系统中删除加拿大国家?

不,你不会。您的单独聚集在这里的人与定位,其中将包括{国家,StateProvince}的总结。如果你删除一个国家,你将很可能同时删除其内部包含以及所有的州或省。< / p>

仅仅因为Person引用了一个类或者 has -a 类,并没有使所有引用成为该聚合的一部分。位置在许多系统中是非常常见的聚合,并且经常站在它自己的位置。

您应该有一个人库,它利用LocationRepository并有UI直接调用LocationRepository获得位置聚集。

答案 1 :(得分:0)

您可以从不同的表格填充您所在的国家/地区和州。然后,您将填充这些表中的下拉列表。当使用已经分配了Country和StateProvince的特定Person实体时,您将通过id将它们与主表绑定。

希望有所帮助。