【问题标题】:Classic ADO.NET or Entity Framework better for larger scale database transactions?经典 ADO.NET 或实体框架更适合更大规模的数据库事务?
【发布时间】:2010-11-16 19:27:54
【问题描述】:

我们刚刚开始了一个使用 .NET 3.5 和 MSSQL 2008 开发 Web 门户的项目。有人提出了一个问题,即处理涉及数万到数十万条记录的数据访问的明智选择是什么?我在某处看到了一张表,它比较了 ADO.NET、EF 和 LINQ to SQL,看起来 LINQ to SQL 平均来说是最慢的,但 ADO.NET 在大型操作上卡住了。

顺便问一下,您对大规模使用 NHibernate 有什么想法?

【问题讨论】:

    标签: .net entity-framework ado.net


    【解决方案1】:

    归根结底,一切都将使用 ADO.NET。

    我可能会使用存储库模式编写概念验证应用程序(一个存储库使用实体框架,另一个使用原始 ADO.NET)。

    运行一些测试,看看哪种方法更适合您的需求。

    我会告诉你,使用 vanilla ADO.NET 可以让你更精细地控制对数据库实际执行的内容。

    【讨论】:

      【解决方案2】:

      Linq2Sql 和 EF 都将您的源代码翻译成 T-Sql,以防 MS SQL。速度取决于它们如何转换为 sql。请记住,您始终可以使用其中任何一个调用您自己的 sql (s-procs),从而在生成的 sql 性能不够好的情况下更好地控制对您的存储执行的内容。

      【讨论】:

        【解决方案3】:

        StackOverflow.com 使用 LINQ-to-SQL。我猜他们现在正在处理数十万条记录。您的团队可以接受 SO 的表现吗?

        正如其他人所说。无论如何,它最终都是一样的,T-SQL。 ORM 是关于函数式编程和软件设计的。始终可以对基础查询进行优化。使用 vanilla ADO.NET 只是因为有人的测试表明它在特定情况下表现更好,这对我来说似乎是一个不好的理由。

        LINQPad 是一个非常有用的工具,用于比较框架和优化查询。如果你还没有,你应该去看看。

        【讨论】:

        • 我来自 Oracle 背景,所以我对 LINQ2SQL 和 ADO.NET 几乎一无所知,到目前为止,ADO.NET 对我来说似乎是最舒服的,但担心的是当我们的网站出现时,可能会切换到另一种方法已经成熟了,所以我不得不四处打听。感谢您的链接!
        • @fred:啊,明白了。如果您现在才开始使用它,我认为 Entity Framework 4 是要走的路。微软已经非常清楚地表明了他们对该技术的承诺。他们已经展示了 v4 中的所有改进。使用 ORM 与直接查询相比需要一些时间来适应。但我希望你会喜欢它,一旦它开始融合在一起。 LINQPad 确实加快了学习过程,让您可以在实体仍在开发时轻松测试它们。祝项目好运。
        猜你喜欢
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多