代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Harrington

我的模特应该住在哪里?Web层还是数据层?(MVC+氨气)

  •  12
  • Jeffrey Harrington  · 技术社区  · 17 年前

    我正在使用MVC、Ninject和NHibernate(我第一次使用这些技术)设置一个N层应用程序。为了清晰起见,这些层是一个“数据”层、“服务”层和一个“Web”层(都是单独的项目)。

    使用MVC,您的模型位于“模型”文件夹中。似乎有必要将我的模型放在这里,以创建强类型的视图,并大体上遵循MVC的哲学。

    但是,使用nhibernate,我还需要“数据”层中的模型,以便可以进行映射,nhibernate可以实例化实际对象以返回到服务层。

    跨项目复制类并不是很枯燥,将它们抽象到自己的库中似乎对MVC(无论是在实践中还是在哲学中)都没有很好的效果。

    有什么想法吗?您如何构造O/RM对象与MVC模型?

    5 回复  |  直到 16 年前
        1
  •  6
  •   Craig Stuntz    17 年前

    我将实体框架模型/类保存在数据层中,并将MVC项目的模型文件夹用于表示模型和模型绑定。

        2
  •  6
  •   harriyott Erik Funkenbusch    16 年前

    数据模型是它自己的东西。MVC中的模型是不同的。它是您将要显示的内容的模型,可能是,也可能不是您的数据模型。您的数据模型是否可以超越层。
    以标准的注册表格为例。数据模型可能包括用户名、密码和一组登录历史类、一个指示它处于活动状态的标志以及许多其他内容。MVC中的模型可能只关心用户名和密码,并且用户输入两次密码。您的数据模型真的需要两个密码字段吗?不,但是MVC中的模型是这样的。因此,有两种不同的动物。

        3
  •  4
  •   Chris Conway    17 年前

    我把我所有的模型都放在数据层中,因为没有纤维。看一看 S#arp Architecture 为了让你的演讲保持干净。模型不必实际地位于Web项目中,视图就可以被强类型化。

        4
  •  1
  •   Andrei Rînea    17 年前

    你对这里的干燥原理是正确的。我将Linq-to-SQL对象与我的业务对象分开,我有一些重复,这并不能让我感觉良好,但似乎没有一个简单的解决方法。

    我做这个决定很困难,但是我在建立MVC店面的时候看了Rob Conery的博客,最后我决定这样做(ORM对象和Business Objects)

        5
  •  0
  •   Simon Laroche    17 年前

    有了MVC,您的模型 在“模型”文件夹中。似乎 必须把我的模型放在这里 创建强类型视图并 大体上符合 MVC。

    没有模型可以是任何你想要的。如果有必要的话,我仍然会使用一个演示模型,但是我不反对在您的视图中使用您的NHibernate实体。

    使用nhibernate,您不需要真正的数据层,因为会话本身就是数据层。

    服务层似乎是一个有效的想法,但前提是您计划为该层拥有多个客户机。

    否则,我将只有一个项目,并使用名称空间来分隔层。它构建更快,部署更容易。