【问题标题】:Models in asp.net mvc 3 areasasp.net mvc 3 领域中的模型
【发布时间】:2012-02-22 16:30:52
【问题描述】:

如何组织多个区域的模型?我正在尝试使用区域来组织代码。我正在使用 visual studio 2010 express ,该项目在 asp.net mvc3 上,并且使用了 code-first development。互联网上的所有教程和参考资料都只讨论了控制器和路由,但是模型呢?更准确地说,我正在寻找周围的建议:

  1. 一个区域中的模型文件夹将包含它自己的类,所以在哪里 应该放置 dbcontext 吗?我已经有一个 dbcontext 类 在“根”模型文件夹中包含多个 dbset 条目。我可以吗 有多个 dbcontext 将其数据存储在同一个数据库中?
  2. 我已经通过了 asp.net mvc 便携式区域项目 mvccontrib,但它仍然在 asp.net mvc2 中,但这是唯一的方法 在 asp.net mvc 3 中构建插件/组件?
  3. 除了区域/便携区域,还有没有更好的整理方式 代码是一种可以简单地“插入”新功能的方式, 不对现有代码做太多改动?区域看起来 很有希望,但我无法弄清楚模型应该如何 放置。
  4. 区域是否仅适用于控制器和视图分离?

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-areas


    【解决方案1】:
    1. dbcontext 将位于数据访问层或您的数据访问文件夹中,您将在其中管理所有数据访问文件。你会 无论您想在哪里使用它们,都可以在模型中引用这些类。 是的!您可以有多个 dbcontext 将其数据存储在同一个 db 中。

    2. 不知道。

    3. 我或我的团队做的最好的方法是保持视图/模型/控制器完全分开。这样如果一个人 专用于视图或如何显示它们,其他可以写 控制器动作。

    4. 我们不使用区域,因为当您的应用程序倾向于以指数方式扩展时,您可能会失去对什么在哪里的把握?我的 口头禅:4 个文件夹:View/Model/ViewModel/Controller。

    任何其他人可能有不同的看法......

    【讨论】:

    • “你可以有多个 dbcontext 将其数据存储在同一个数据库中”如何?是通过使用它们的构造函数向每个 dbcontext 类显式提供数据连接字符串吗?不会与 edm 元数据冲突吗?
    【解决方案2】:

    我一直在寻找可能的方法来实现 DbContext 的模型级别分离,到目前为止,我发现没有直接的方法让多个 dbcontext 将数据存储在同一个数据库中代码优先。只有模型优先设计才有可能。使用代码优先的多个 dbinitializers 不起作用,因为所有尝试初始化数据库并且只有第一个会成功。 但是,可能有一些方法可以通过使用 DbModelBuilder 动态创建数据库,就像在 orchard CMS 和其他一些开源项目中所做的那样。有人试过吗?请分享...

    【讨论】:

      【解决方案3】:
      1. 区域仅适用于视图模型分离。

      区域的注册代码很好地提示了区域的用途 - 分离出路线和对特定控制器的访问。 (想想逻辑用户界面单元)。对于组织代码,命名空间是首选工具。

      也许看看 Umbraco、Orchard 甚至 N2CMS 之类的东西,看看它们是如何管理扩展的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 1970-01-01
        • 2010-12-20
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多