代码之家  ›  专栏  ›  技术社区  ›  hoakey

MVC与实体模型的混淆

  •  0
  • hoakey  · 技术社区  · 14 年前

    我的困惑源于我在构建mvc应用程序时使用了两种不同的演练,即:Steven Sanderson的pro asp.net mvc和在线mvc音乐商店。前者创建一个域模型,将实体模型与存储库放在一起,而音乐商店演示将实体模型放在mvc model文件夹中。哪种方法是最好的。实体模型和相关存储库是否存在于单独的域层中,或者存在于MVCS模型文件夹中。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Community CDub    8 年前

    关注点分离

    Asp.NETMVC项目模板中的模型文件夹确实非常混乱。大多数对MVC模式了解不够的开发人员认为application/domain model=data model。大多数时候,情况并非如此。

    例如,一个用户实体可以有几种不同的形式:

    • NewUser 是一个 应用模型实体 它具有用户的大多数属性,外加两个可以声明性验证的密码属性
    • User 数据模型实体 具有所有常用的用户属性和一个密码属性
    • 用户 应用模型实体 拥有所有的常规属性 没有人 对于密码

    因此,通过这个简单的示例,您可以看到有多个模型彼此不同。当您有一个多汇编的应用程序时,将应用程序模型放在一个单独的程序集中是非常明智的,因为所有的程序集很可能只使用这些对象进行通信。不应将数据模型实体转移到数据组装/层之外,以利用SoC。。。

    因此,在构建小规模简单应用程序时,最终可以将数据模型放在model文件夹中,但在所有其他情况下,最好使用在所有程序集之间共享的单独的应用程序模型程序集。并有一个单独的数据模型,该模型只在数据层程序集中使用。

    阅读 this answer 这可能有助于你把事情看得更清楚一点。
    以及 this one 也。

    我建议不要使用Model文件夹,而是使用单独的程序集。 您将拥有更好的分离和更好的可伸缩性。

        2
  •  0
  •   Faizan S.    14 年前

    Strategically 将EF模型放在与存储库相同的文件夹中是有意义的,因为它只是 一部分 Data-Access-Layer 在应用程序中。

    Logically 最好把EF模型放在 Model 目录,因为它创建了在应用程序中反映数据库所需的所有类。 (如果你打开 Class View 把所有这些类放在一个名为 模型 而不是 Repositories )

    我们公司也遇到过同样的问题,决定将EF模型保存到model文件夹中。

    毕竟,你做什么取决于你。在这里最重要的是 文件 在开发过程中发生的所有类型的决策(何时、为什么和基于什么)。

    Documenting everything could prevent later WTF's