Model view controller 在MVC中,1个模型1表还是1个模型多表?

Model view controller 在MVC中,1个模型1表还是1个模型多表?,model-view-controller,Model View Controller,在MVC中,1个模型1表还是1个模型多表 我正在构建一个包含3个表的应用程序。我不知道是应该为所有3个表创建一个模型,还是为3个表创建3个模型 在3个表使用3个模型的情况下,如果我想连接这3个表,我应该将代码放在哪里?将代码放在3个模型中的任意一个模型中 有什么建议吗?通常,您会为每个表创建一个模型,因此在您的情况下,这意味着您需要3个模型。 当我说“Model”时,我指的是在一个表中表示一行(通常)的类 例如: 表: 产品 命令 顾客 在这种情况下,最简单的方法是创建3个不同的类(表示应用程序

在MVC中,1个模型1表还是1个模型多表

我正在构建一个包含3个表的应用程序。我不知道是应该为所有3个表创建一个模型,还是为3个表创建3个模型

在3个表使用3个模型的情况下,如果我想连接这3个表,我应该将代码放在哪里?将代码放在3个模型中的任意一个模型中


有什么建议吗?

通常,您会为每个表创建一个模型,因此在您的情况下,这意味着您需要3个模型。 当我说“Model”时,我指的是在一个表中表示一行(通常)的类

例如: 表:

  • 产品
  • 命令
  • 顾客

  • 在这种情况下,最简单的方法是创建3个不同的类(表示应用程序的数据模型),其中第一个类表示单个产品,下一个类表示订单,最后一个类表示单个客户。

    通常,MVC的“模型”部分应解释为“表示模型”或“视图模型”——即封装视图所需的所有数据和行为的类。这可能等同于域模型,也可能不等同于域模型

    域模型应设计为独立于UI。这意味着这样的模型不应该被特定于UI的数据和行为所污染——比如确定某个按钮是否被启用

    您可能还希望在几个不同的视图中显示相同的域对象(例如,主视图/详细视图或显示/编辑视图),如果这些视图差异很大,则为每个视图提供一个视图模型将是有益的

    因此,一般来说,您应该独立地设计域层和表示层

    在域层中,您可以选择将三个表建模为三个类。像Fowler和Evans这样的书包含了大量关于如何将关系数据建模为域模型的指导

    在MVC中为视图建模时,最好为每个视图创建一个模型。这样的视图模型可能只封装单个域对象,但也可能封装和聚合多个不同的域对象

    通过这种方式,您可以确保关注点的分离,并且您的类遵循单一责任原则


    对于非常简单的场景,将域模型和表示模型折叠为一个层可能是有意义的,但您应该意识到,这本质上意味着解决方案中没有域模型-所有模型都将是纯表示模型。

    如果我想加入这3个表,我应该将代码放在哪里,如果您有一个“多对多”关系,通常会有一个表来表示可能不会由模型表示的关系。最明显的方法是向类添加属性,该属性将表示关联的数据。(即,‘客户’类)将有一个名为“订单”的属性,它将是“订单”类的一些集合。(顺便说一下,您可以考虑使用ADO.NET实体框架,它有助于您完成所有这些工作)。我觉得这个anser更令人满意:。也可以查看反模式。很抱歉,我知道这是一篇旧文章。在阅读了你的文章后,我研究了各种类型的模型,我对如何或是否有必要将域模型与表示模型分开感到困惑。你说每个视图应该只有一个模型。D这是否意味着对于给定视图的表示模型中调用的域模型,应该有单独的类?@Klik不可能对该问题给出一个单一的答案,因为这取决于您想要实现给定设计的动机。如果您想拥有单独的域模型,您就是在冒险进入territo分层应用程序体系结构的复杂性,以及与此相关的成本: