|
2
|
| nathanchere Jitendra Vyas · 技术社区 · 15 年前 |
|
|
1
1
我认为这需要一个复合设计模式: http://www.dofactory.com/Patterns/PatternComposite.aspx 代码如下:
嗯。 |
|
|
2
1
您可以使用类型层次结构…
然后和他们合作可能看起来像这样…
虽然它会起作用,但我不确定它是否有意义。这很容易变得复杂和难以维护。 这可能更适合作为数据存储在数据库中,并编写代码以通用方式处理数据,而不是特定方式。 每次添加新类型时,都需要更改代码,这并不理想。 |
|
|
3
1
这很难“荒谬地规范化”——事实上,一个自引用表就足以使用邻接列表模型将信息保存在数据库中:
在哪里?
这可以映射到一个非常简单的实体类:
这就是你要做的一切。如果您开始有非常深/宽的层次结构,那么您可能需要考虑性能的替代模型,但是在这里给出的示例中,您离扩展简单邻接列表还有很长的路要走。 忘了枚举-这里没有意义。如果这是一个数据驱动的应用程序,那么您几乎肯定希望能够在不更改代码的情况下更改类别列表,而枚举类型将要求您这样做。 |
|
|
4
1
您的问题的要点与ORM无关,它只是一个如何为您的需求建立一个好的关系模型的问题。您已经给出了答案:如果您不想为每个枚举建模不同的表,那么就不要这样做。对您的PC类型、附件类型等使用整数属性,并将其映射到代码中定义的枚举。这样,每当扩展一个枚举时,就不必更改数据库中的任何内容(甚至不必更改任何枚举表中的数据)。 当然,在某些情况下,将枚举建模为单独的表是值得的。显然,当您必须将额外的数据存储到枚举中(如短名称、长名称、ID等)时,就是这种情况。或者当您有不同的程序时,可能是使用不同的编程语言,它们都需要处理相同的枚举集。或者,当用户不需要程序的新版本就可以扩展PC类型列表时。 |