我看到一些项目的数据模型和控制器模型是分开的,但是其中一些正在使用通用模型。为什么我们需要分开这些,或者我们不需要?
答案 0 :(得分:0)
通过“ DataModel”,我指的是您要持久使用诸如Entity Framework Core之类的实体类,而通过“ Controller Model”,我指的是视图模型或其他东西在视图和控制器之间传递。
给出这些假设,简单地说,是的。好的面向对象代码应遵循SOLID。该首字母缩写词的第一个字母代表单一责任,可能是第一个原因。班级应该做一件事并且做好。一旦一堂课开始对领域有太多的了解或开始承担主要不负责的问题,那么您就会得到越野车,可怕的代码,几乎无法维护。
基于此,您的实体类的职责是代表一组持久数据。就这些。因此,几乎可以肯定它与您在控制器/视图中需要执行的操作不兼容。如果您只是出于控制器/视图的目的向实体类中添加内容,那么现在您将拥有一个单一的类,该类实际上服务于两个主服务器。它模糊了持久性和显示/验证/等之间的界限。在视图中。
正确的做法是创建一个视图模型:一个专门负责满足视图需求的类。然后,您可以将持久性逻辑安全地保留在一个类中,而将视图逻辑安全地封装在另一类中,并且只需在两个类之间来回映射数据即可。