【问题标题】:Linq to SQL or the Entity Framework for Enterprise ASP.NET MVC application architecture?Linq to SQL 或企业 ASP.NET MVC 应用程序架构的实体框架?
【发布时间】:2011-01-03 06:20:05
【问题描述】:

我仍在尝试为复杂的 ASP.NET MVC Web 应用程序找出正确的架构。

我查看了很多示例代码,但到处都有不同的做法。

非常感谢您对此的看法。

另一个问题:你会使用 Linq to SQL 还是实体框架?

谢谢,

-本

【问题讨论】:

    标签: .net asp.net asp.net-mvc linq-to-sql architecture


    【解决方案1】:

    查看Architecture Guide: ASP.NET MVC + N-tier + Entity Framework and Many More

    如果您想使用 ASP.NET MVC,但正在努力安排事情以自信地用于您的下一个业务项目。这篇文章只适合你。本文将指导您使用 ASP.NET MVC 来构建一个小型文档管理系统。

    【讨论】:

      【解决方案2】:

      一些个人想法和经验:
      - 使用 nhibernate 作为 orm,或等待 EF v4。 Tekpub.com 有很好的关于使用 NH 的教程。 L2S 和 EF 有点像黑盒子:他们做了很多事情,他们有很好的文档,但他们没有可扩展性点。如果你想插入一些新功能或改变行为,你只能用 NH 来做。 v4 中的 EF 将处于 NH 2 或 3 年前的状态。
      - 浏览尽可能多的 MVC 应用程序示例。其中很多你可以在 codeplex 上找到。例如:CodeCampServer、WhoCanHelpMe、Storeddd
      - 如果您正在考虑构建框架(或助手)来解决一些基础设施问题,请先用谷歌搜索;很有可能其他人比你更聪明(好吧,在我的情况下比我更聪明)已经有同样的问题,并且以框架(对象映射器,验证,消息传递......)的形式编写了一段很好的代码,或者只是写了一篇关于它的博客。
      - 使用清晰的架构或 fubuMvc 可以解决大部分基础架构工作,但应用程序的其余部分取决于您的业务模型。
      - TDD 将迫使您编写良好且可维护的代码。尽可能多地尝试使用 Gang of Four 设计模式和 SOLID 原则。

      【讨论】:

        【解决方案3】:

        你会使用 Linq to SQL 还是实体框架?

        如果您想访问直接映射到数据库的对象模型,Linq2SQL 非常棒。例如,如果您有一个“订单”表,Linq2SQL 将创建一个“订单”对象,您可以使用它来访问数据。这通常是完全足够的。

        当您想要创建可能不直接映射到数据库的对象模型时,实体框架非常有用。

        【讨论】:

          【解决方案4】:

          由于您要使用 MVC 应用程序,您可以轻松地在 Controller 层下方编写 DataAccess 层。这将使它成为一个分层应用程序。因此,这可能是您的架构需求的正确选择。

          对于 LinQ-SQL 或实体框架问题,我只使用了实体框架。所以不确定 Linq to Sql 选项。但是当模式改变时,Entity Framework 会出现一些问题。当列被重命名等时,生成的 edmx 的更新不会正确发生。所以我所做的是在每次架构更改后删除并创建 edmx,您必须在那里手动更新更改。

          【讨论】:

            【解决方案5】:

            每个地方都是不同的,这就是为什么。这个问题没有万能的答案。看看其他方法,并从中获取任何你认为对你的情况有用的东西。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-11-27
              • 1970-01-01
              • 1970-01-01
              • 2010-09-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多