Entity Framework 和 LINQ To SQL的区别

翻译 2018年04月16日 16:10:17

综述

LINQ是一种语言集成查询,它包含了LINQ to SQL,LINQ to Objects,LINQ to XML,LINQ to Entities(Entity Framework两种查询方式之一,另外一种叫做Entity SQL)。

Entity Framework 是一种ORM (Object Relational Mapping)框架,把关系型数据转换成对象的一种框架。

LINQ to SQL是Linq最初提供的一种访问数据的方式,它允许你从SQL Server数据库获取数据。

LINQ to Entities是Linq提供的另外一种访问数据库的方式。和LINQ to SQL不同的是,它支持的数据库类型和ADO.Net支持的数据库一样多。

什么时候使用Entity Framework 和 LINQ to SQL

当你的应用程序符合以下条件时,就可以使用Entity Framework:

  1. 需要比较灵活的映射关系
  2. 能够查询除SQL Server系列产品以外的关系型数据库
  3. 能够在SSRS,BI,SSIS之间可复用的数据访问模式
  4. 需要提供完整的文本查询语言
  5. 需要查询概念模型的能力

如果你不需要以上的各种功能,那么LINQ to SQL是一种比较简单的快速开发选择。

两种方案的功能比较

LINQ to SQL可概括为:基于SQL Server数据库的快速开发技术。而Entity Framework则意味着企业级开发。

LINQ to SQL是基于SQL Server数据库模型来进行对象映射的,而Entity Framework提供更灵活对象映射,支持更多的类型的数据库。

功能

LINQ to SQL

Entity Framework

模型(Model)基于数据库实体基于概念模型
数据库只支持SQL Server大部分的数据库
复杂度简单复杂
开发周期快速开发开发缓慢,但是功能更强大
查询方式1. LINQ to SQL (for select)
2. Data Context 
1. LINQ to Entities (for select)
2. Entity SQL 
3. Object Services (for update, create, delete, store procedure, view)
4. Entity Client (is an ADO.NET managed provider, it is similar to SQLClient, OracleClient)
当数据库发生改变不支持同步支持同步
发展性微软不再开发新功能微软主推的ORM框架
自动生成数据库不支持支持
性能第一次较慢第一次较慢,整体会优于前者

性能比较

相对于Entity Framework,LINQ to SQL 是更轻量级的框架,EF需要处理两层模型映射,而LINQ to SQL只有一层映射。EF会生成更多更复杂的TSQL,这些TSQL都是作用于更好的可读性,同时SQL在大多数情况会得到相同的执行计划。但是部分情况下会生成更大更复杂的SQL语句,因此会有性能影响。

而LINQ to SQL在客户端有轻微的查询优化,它会评估where子句进行优化,所以会有更好的查询效率。

LINQ to SQL是否已经被丢弃?

虽然网上有很多人讨论到此功能已经被弃用,但是该功能还是存在于.Net Framework之中,不过该功能完全可以被Entity Framework取代,并且具有更少的限制。

EF是主流,也是微软主推的框架,不过LINQ to SQL也还是被微软支持的。根据不同的情况,可以进行不同的选择。


原文地址:https://maxivak.com/entity-framework-vs-linq-to-sql/

LINQ TO SQL 和 ADO.NET ENTITY 有什么区别呢?

LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。他们之间的本质区别在于EF对数据库架构和查询的类型实行了更好的解耦。使用EF,查询的对象不再是完全对...
  • dkss0309
  • dkss0309
  • 2016-11-18 10:04:49
  • 862

LINQ之路 9:LINQ to SQL 和 Entity Framework(上)

 LINQ之路 9:LINQ to SQL 和 Entity Framework(上) 在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”。在这接下来的二个...
  • huwei2003
  • huwei2003
  • 2014-10-19 15:52:47
  • 1010

使用 LINQ To SQL 和Entity Framework实现灵活的数据访问

  • 2018年01月08日 20:41
  • 58KB
  • 下载

EntityFrameworkCore中linq转sql

public class IQueryableExtensions { private static readonly TypeInfo QueryCompilerTypeInfo = t...
  • tianxuejin
  • tianxuejin
  • 2017-05-03 11:39:25
  • 544

Entity Framework vs. LINQ to SQL

Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题。下面的表中简要罗列了两种技术的主要区别。   LINQ to SQL ...
  • jfchef
  • jfchef
  • 2012-06-05 05:49:18
  • 4819

LINQ to SQL和Entity Framework对比与关联

  • 2018年01月08日 20:39
  • 15KB
  • 下载

Entity Framework技术系列之7:LINQ to Entities

前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据。L...
  • dyllove98
  • dyllove98
  • 2013-04-03 23:58:52
  • 10619

LINQ之路10:LINQ to SQL 和 Entity Framework(下)

 LINQ之路10:LINQ to SQL 和 Entity Framework(下) 在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上...
  • huwei2003
  • huwei2003
  • 2014-10-19 16:02:28
  • 922

Entity Framework(LINQ to Entities)使用日期判断条件Truncate日期函数

Entity Framework(LINQ to Entities)使用日期判断条件Truncate日期函数,类似Convert函数,MYSQL数据库可以直接使用convert(varchar(10)...
  • dacong
  • dacong
  • 2014-01-28 21:41:41
  • 7853

entity framework 6.0 复杂条件的两种调用方式

 共同的部分 OrderModelField omf1 = new OrderModelField("Fbqssj", true);//多个字段排序 OrderModel...
  • laokaizzz
  • laokaizzz
  • 2014-06-04 18:14:07
  • 1416
收藏助手
不良信息举报
您举报文章:Entity Framework 和 LINQ To SQL的区别
举报原因:
原因补充:

(最多只允许输入30个字)