可维护和可扩展的导航属性

时间:2014-01-05 19:42:42

标签: entity-framework domain-driven-design class-diagram domain-model navigation-properties

哪一个更好(优点和缺点)(维护,可扩展性):

1. Request实体有{3}个不同的引用(导航属性):

2. Signature实体的集合为Request,每个Signature都有Signature

1 个答案:

答案 0 :(得分:1)

模型1

这个模型几乎把你的业务规则刻板。 只能是三种类型的签名,只能各一个。这些规则的任何变化都需要更改数据库,这一直是一种普遍的变化 除此之外,当您使用要重新连接到上下文的断开连接的实体时,存在潜在的缺陷。如果Signature中的一个(或两个)是相同的(业务规则允许),则必须注意两个实体密钥被添加两次的异常。

模型2

这提供了更多的自由度(可扩展性),但这意味着您需要编码的业务规则来强制执行我为模型1提到的规则。另一方面,它将允许更多人批准请求,例如。 /> 也许更好的模型是使SignatureType成为flagged enum,因此签名可以有多种类型,签名不必重复(再次:业务规则允许)。这样可以避免我在模型1中提到的潜在的多重关键异常。

所以我更喜欢模型2(带有标记的枚举),因为我喜欢在代码中表达业务规则,而不是在数据库约束中。