【问题标题】:How to design DTO about Intersection Entity with attribute如何设计具有属性的交叉实体的 DTO
【发布时间】:2011-01-14 07:04:01
【问题描述】:

我想知道如何使用属性设计关于交叉实体(关于多对多关系)的 DTO。

例如,如果有 CAR、PARTS、CAR_PARTS 表,比如

CAR (ID, NAME, ...)
PARTS (ID, NAME, ...)
CAR_PARTS (CARID, PARTSID)

,并且让CAR和PARTS有多对多的关系,那么我认为我们可以将DTO设计为

class Car {
    int id;
    String Name;
    List<Parts> partsList;
}
public class Parts {
    int id;
    String name;
    List<Car> carList;  //if necessary
}

没关系。

问题是,如果 CAR_PARTS 表有任何属性,比如

CAR (ID, NAME, ...)
PARTS (ID, NAME, ...)
CAR_PARTS (CARID, PARTSID, QUANTITY)

,这里的QUANTITY表示一辆车的零件数量,比如一辆车有4个轮胎,那么QUANTITY就是4,这种情况下怎么设计DTO呢?

在上面的类中,它们将关系表示为具有每个类的属性。所以好像不能表达数量...

【问题讨论】:

    标签: database design-patterns database-design orm dto


    【解决方案1】:

    为什么不制作像 Dictionary&lt;Parts, Qty&gt; partsList; 或 Make List&lt;CAR_PARTS&gt; parts; 这样的字典并拥有带有所需属性的 car_parts 类

    【讨论】:

    • 如果我实现Dictionary&lt;Parts, Qty&gt; partsList,那么就不可能表达额外的属性如
    • 对不起上面的评论。感谢您的回复!如果我实现Dictionary&lt;Parts, Qty&gt; partsList,那么就不可能表达像CAR_PARTS(CARID,PARTSID,QUANTITY,FOO)这样的附加属性。关于List&lt;CAR_PARTS&gt; parts 的想法,我实际上已经考虑过了。但其中的问题是,有附加的和没有的模式之间的区别。我正在开发一个数据访问库,它需要较低的兼容性。因此,如果将来出现附加属性,则更改设计是有问题的。所以我想知道是否还有其他好主意。
    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    相关资源
    最近更新 更多