新手在这里。我正在尝试学习 OOD/OOP 并在网上阅读我不应该将 SQL 表转换为类。但我找不到解释为什么不这样做或跳过哪些表格。所以我根据下图制作了一个 Web 应用程序。它工作得很好。但我不使用OO。有人可以简单解释一下哪个表不应该映射到一个类中,为什么不。感谢您的时间。PS 请不要使用 LINQ 或 NHibernate 等,因为我不了解它们。我只需要了解OOD。
2 回答
当使用 .NET(可能还有大多数其他语言)设计应用程序时,应用程序所需的每个表都成为其自己的类,但您当然可以拥有更多未映射到表的类。
掌握了程序的要求后,您需要设计数据库层(即您的表)来持久保存您希望保存在数据库中的任何数据。然后 - 对于一个小项目 - 每个表自动成为一个类,您可以开始构建更多类来管理这些“模型”或“实体”类。映射到表的类通常称为实体或模型。未映射的类仅称为类。
因此,在您的示例中,您有四个表,因此您将至少有四个模型类。然后,您将设计额外的非模型类(根据需要并且有意义),以通过您的程序适当地管理您的模型类。
如果您想了解 OOP,请不要从数据库开始。您到处都可以看到将表“转换”为类的事实只是演示某个 ORM(对象关系映射器)(如实体框架)的一个不幸的副作用。这些是某个库的演示,而不是面向 OOP 的演示。
所以,首先,忽略数据库。所有的。不幸的是,MS 将那个该死的 EF 推到了任何地方,因为“看看你做 Web 应用程序有多容易”。ORM 是一个高级主题。您应该学习 OOP 的基础知识(使用 C#),即了解对象与类的比较,什么是封装、继承、多态以及关于 SOLID 原则(谷歌关于它们,你会发现很多文章和视频演示)。
只有在你理解了这些之后,尝试一个数据库并从基本的 ado.net 开始。并且只有在你对它有清楚的了解之后,才去阅读有关 ORM 的知识。事实上,在此之前,您应该阅读一下设计模式。
你真的必须对所有这些概念有一个清晰的理解。现在,我认为一切都让您感到非常困惑,因为大多数教程都针对特定的功能,而不考虑适当的应用程序分层或职责。一切都混合在一起,作为初学者,您会留下这样的印象,那就是您必须这样做。