如何在继承的实体中指定属性的类型?

时间:2013-07-24 14:42:31

标签: c# entity-framework inheritance

我最近开始在项目上使用实体框架,我想知道如何为特定案例建模。

考虑这种情况:

  • 我的应用程序需要为几种类型的合同建模
  • 每种类型的合同都包含一个或多个分包合同
  • 每种类型的合同都在集合中公开其分包合同
  • 每种类型的合同只能包含与合同类型相对应的特定类型的子合同(类型ContractA的合同只包含类型为SubcontractA的子合同,类型为{{{}}的合同。 1}}只包含ContractB
  • 类型的子合同

在实体框架模型中对此进行建模的最佳方法是什么?

我的第一次尝试使用了基类型之间的关联,但我希望能够在每种派生类型的Contract上指定Subcontracts的类型,而不需要在特定类型的Contract上有两个不同的属性。

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似的情况。我最终只设置了基类型之间的关联,并向实体添加了验证,以确保属性只包含正确的子类型。查看IValidatableObject

缺点是这在运行时发生,因此程序员可能会分配错误的类型,并且在测试之前他们不会发现。它还需要将对象转换为正确的类型才能使用它们。这是我能提出的最佳选择。

我很想知道某人是否有更好的解决方案。