2011-09-12 34 views
1

我只想在MVC模式中弄清楚属于模型的内容,特别是MVC3中Models文件的内容,与存储库和对象的内容。MVC - 模型,对象和库之间的差异

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

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

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

我认为我对控制器和存储库都有很好的理解,但是有时我会对某些代码是否应该在一个或另一个中感到困惑。那里有什么特定的指导原则或限制,对于什么绝对不应该放在控制器中,而应该放在存储库或模型中?

一如既往的感谢。

+0

我个人将我的viewmodels放入ViewModels文件夹树和由Entity Framework生成的模型放到Models文件夹树中。我怀疑别人会有其他的方法。从概念上讲,使用EF我习惯于让我的控制器处理数据库上下文并调用'context.whatever.Add(myThing)'并调用'context.SaveChanges()' - 这可能不是“最好的”办法。 – itsmatt

回答

1

我们做一些非常相似的事情,除了对象和数据被组合在一个被所有项目引用的核心库中。 MVC项目中的models文件夹严格适用于View Models。

如果你的控制器需要额外的类,它真的取决于它需要的地方。我通常会为HtmlHelpers,属性和过滤器包含一个带有子文件夹的助手文件夹。如果它是一个在MVC项目之外存在的依赖项(在所有项目中使用的公共类),我会将它添加到Core中。

相关问题