【问题标题】:Should we seperate DataModel and Controller Model in .NET CORE Project?我们应该在 .NET CORE 项目中分离数据模型和控制器模型吗?
【发布时间】:2019-05-17 14:58:27
【问题描述】:

我看到一些项目数据模型和控制器模型是分开的,但其中一些使用的是通用模型。为什么我们需要将这些分开或者我们不需要?

【问题讨论】:

  • 您能否为每种方法添加指向您看到的项目的链接?您是否需要分离数据和控制器模型真的取决于您的具体用例,据我所知,这里没有具体的指导方针。我认为基于一个具体的例子来讨论这个话题会更容易,我认为
  • 欢迎来到 Stack Overflow!请提供您问题中的代码示例,以便我们更好地帮助您。谢谢!

标签: asp.net-mvc asp.net-core model-view-controller


【解决方案1】:

“DataModel”是指您使用 Entity Framework Core 等东西持久化的实体类,“Controller Model”是指视图模型或事物在视图和控制器之间传递。

鉴于这些假设,简单地说,是的。好的面向对象的代码应该遵循 SOLID。该首字母缩略词的第一个字母代表单一职责,它可能是第一个是有原因的。班级应该做一件事并做好。一旦一个班级开始对该领域有太多的了解或开始着手处理它主要不负责的问题,那么你就会得到几乎无法维护的错误、可怕的代码。

基于此,您的实体类的职责是表示一组持久化数据。就这些。因此,它几乎肯定会与您需要在控制器/视图中执行的操作不兼容。如果您只是为了控制器/视图的目的而开始向实体类添加东西,那么现在您已经有了一个基本上为两个主服务器服务的类。它模糊了持久性和显示/验证/等之间的界限。在视图中。

正确的做法是创建一个视图模型:一个专门负责满足视图需求的类。然后,您可以将持久性逻辑安全地保存在一个类中,并将逻辑安全地封装在另一个类中,并在两者之间来回映射数据。

【讨论】:

  • 对我来说,所有时间数据模型和视图模型都是一致的,所以我不会添加额外的模型类。感谢您的回复。
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多