【发布时间】:2011-05-06 20:01:58
【问题描述】:
每种方法的优点/缺点是什么?
我知道我在一本书或这个网站上的某处读过为什么使用表继承对于 Entity Framework 4 来说很糟糕。
例如,为什么不创建一个具有 entityId、datecreated、datemodified 的表,然后让所有其他类在实体框架中继承它呢?然后我的所有其他实体的表不需要有这些列。然后我可以让一个人类继承那个基类,然后一个特定的人继承人。
除了编写一个较小的 SQL 脚本来生成数据库之外,我不确定这样做的好处...
我看到的缺点是,它让直接在 SQL 中查询/查看数据变得非常痛苦(所有相关信息都被打破了这么多表),我还问了我的朋友,他说:
“对我来说最重要的事情是我不希望我的数据库依赖于我的应用程序的当前继承结构。如果,出于某种原因,我想改变我的应用程序的设计就继承而言,没关系,因为我的数据不依赖于我当前的系统设计。我认为数据存储只是存储。数据库根据适当的数据库设计进行规范化,但继承是一种程序化的选择应用程序开发,而不是数据存储。仅此一项就会阻止我使用它。在设计应用程序时,继承是一件非常困难的事情。更改应用程序代码比更改和迁移数据库要容易得多数据 当大多数经验不足的开发人员遇到问题时,他们会通过继承来解决问题。我刚开始开发时也是这样做的。这在逻辑上是有道理的。但是,一旦开发了很长时间,您就会了解到委托确实是最好的方法(在 soa 的情况下服务调用服务),并且单一用途的服务提供比继承更多的重用。”
这对我来说也很有意义。
所以
1) 一般来说,继承与扩展的优缺点是什么
2)在我上面的具体例子中,什么更合适?
3)如果我的例子对其中一个或两个都不好,那么使用继承和使用扩展的好例子是什么?
我以前都用过,但由于我经验不足,我仍然不确定如何处理所有情况。
10 票,8 人收藏,过百次浏览,无人能展开? =(。
【问题讨论】:
标签: .net entity-framework inheritance entity-framework-4 extending