【问题标题】:What's Different Between LINQ and Entity Framework?LINQ 和实体框架有什么不同?
【发布时间】:2013-01-24 07:33:40
【问题描述】:

我知道 LINQ 的好处,并且知道在 .Net 应用程序中使用它。我填写了作为实体框架提供的相同内容。

那么 LINQ 和实体框架之间的主要区别是什么?

【问题讨论】:

    标签: c# asp.net .net ado.net


    【解决方案1】:

    LINQ 可以应用于任何数据源:内存中的对象、XML、SQL...

    Entity Framework 可以使用 LINQ 对关系数据库执行查询。

    LINQ to SQL 是 Entity Framework 的前身,现在已经过时了。

    【讨论】:

    • 当我将 EF 用于企业解决方案时,模型每天都会变得越来越大,所以我们在第一次初始化 EF(或预热它)时特别遇到了性能问题,我读了这个weblogs.asp.net/fbouma/… 和现在我很犹豫是否必须更改 ORM?也许使用 dapper(我知道它没有更改跟踪)或 LLBLGenPro 可以提供帮助!我们正在研究企业级解决方案,我希望了解您的想法。非常感谢。
    【解决方案2】:

    比较 EF 和 LINQ 不正确。两者是不同的东西,它们经常一起工作以提供更好的开发人员体验(和生产力优势)。

    LINQ 正在查询可应用于任何数据源的语法/模型。 EF 提供了一种这样的数据源。

    【讨论】:

    • 你能提供任何教程链接或文章链接,可以告诉我 EF 和 LINQ 一起使用吗?
    • @Mrugesh,我相信 MSDN 上的几乎每个 EF 代码示例都会显示使用 LINQ 以及例如看到这个:msdn.microsoft.com/en-us/data/jj205424 其中query 部分是 LINQ。我希望您不要混淆 LINQLINQ to SQL - 后者是用于 SQL Server 数据库(而 EF 针对任何 RDBMS)的 ORM 库(类似于 EF)。
    【解决方案3】:

    它们有些相似,并且在代码方面可以以非常相似的方式使用,但它们有一些重要的区别。请注意,“LINQ”与“LINQ to SQL”不同; EF 也使用 LINQ。一些显着的区别是:

    • LINQ to SQL 在很大程度上只是 SQL Server,与其说是设计上的,不如说是实现上的。如果您有兼容的 ADO.NET 提供程序,EF 旨在支持并且确实支持多个 DB。
    • 开箱即用,LINQ to SQL 在数据库元数据更改方面的情况非常糟糕。您必须从头开始重新生成模型的某些部分,并且会丢失自定义内容。
    • EF 支持多对多关系和继承等模型功能。 LINQ to SQL 不直接支持这些。
    • 在 .NET 3.5 中,LINQ to SQL 对 SQL-Server 特定功能的支持比 EF 好得多。这在 .NET 4 中大部分是不正确的。它们在这方面非常相似。
    • EF 允许您选择 Model First、DB First 或 Code First 建模。开箱即用的 LINQ to SQL 真的只支持 DB First。

    来源:Here

    【讨论】:

      【解决方案4】:

      我完全同意 VinayC。你无法真正比​​较。

      使用实体框架,您将能够在程序中拥有数据库的完整表示。它将帮助您创建与数据库元素相对应的类,就像它们在数据库中一样连接在一起。您可以直接与这些类的元素进行交互,这样会影响数据库。您将在 Visual Studio 中对这些类图进行一些表示。它基本上通常比直接使用数据库元素更简单,即使设置它需要一些努力。

      Linq 的用途是对数据​​源进行查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 2017-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        相关资源
        最近更新 更多