【问题标题】:MVC -- Differences between Models, Objects, and RepositoriesMVC——模型、对象和存储库之间的差异
【发布时间】:2011-09-12 08:42:58
【问题描述】:

我想在 MVC 模式中澄清一下 Models 中的内容,特别是 MVC3 中 Models 文件夹的内容,而不是存储库和对象。

现在,在我当前的 MVC3 解决方案中,我有 4 个项目:

  1. 一个名为“Objects”的项目,其中包含有关我的应用程序中所有核心对象的信息。
  2. 一个名为“Data”的项目,其中包含有关每个对象的数据上下文和存储库的信息信息(使用 MVC3 脚手架创建)
  3. Web 项目,其中包含控制器、视图以及 -- 本问题的主题 -- 模型
  4. 一个单元测试项目

我真正想澄清的是 Objects 项目中的内容与 Web 项目的 Models 文件夹中的内容之间的区别。现在我只使用模型文件夹来保存我称之为“视图模型”的东西,它通常包含核心对象的组合。该文件夹中的文件应该只包含定义模型内容的定义,还是应该包含控制器可能调用的其他代码?

我认为我对控制器和存储库都有很好的了解,但有时我会混淆某些代码是否应该放在其中一个或另一个中。对于绝对不应该进入控制器而应该进入存储库或模型的内容,是否有任何具体的指导或限制?

一如既往的感谢。

【问题讨论】:

  • 我个人将我的视图模型放入 ViewModels 文件夹树中,将实体框架生成的模型放入模型文件夹树中。我怀疑其他人会有其他方法。从概念上讲,使用 EF 我已经养成了让我的控制器处理数据库上下文并调用 context.whatever.Add(myThing) 和调用 context.SaveChanges() 的习惯——这可能不是“最好”的方式。

标签: asp.net-mvc-3


【解决方案1】:

我们做了一些非常相似的事情,只是对象和数据组合在一个核心库中,所有项目都引用它。 MVC 项目中的模型文件夹仅用于 View Models。

如果你的控制器需要额外的类,它真的取决于它需要什么到哪里去。我通常会包含一个 Helpers 文件夹,其中包含 HtmlHelpers、Attributes 和 Filters 的子文件夹。如果它是存在于 MVC 项目之外有意义的依赖项(所有项目中使用的通用类),我会将其添加到 Core。

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多