LINQ to SQL vs ADO.Net

时间:2009-03-22 15:32:09

标签: .net linq-to-sql ado.net

LINQ to SQL和ADO.net有什么区别?

6 个答案:

答案 0 :(得分:29)

ADO.NET是.NET Framework的基础数据访问API(非常类似于Java中的JDBC)。它自.NET首次发布以来就已存在。

LINQ to SQL是一个基于ADO.NET的数据访问框架和新的语言功能,它使SQL Server数据以面向对象的编程风格本地可用。

答案 1 :(得分:8)

你需要首先理解LINQ是微软用一种工具以声明方式查询各种结构化数据的预期范例 - 想想“一环统治所有”。 LINQ to SQL只是第一个用于查询关系数据库的表现形式。

事实上,微软对LINQ与SQL的关系有着混合的信息。我认为问题在于它已被理解为其他抽象策略的替代品,现在它经常被视为程序员避免熟练使用SQL的一种方式。

ADO.Net将OOP视为现实,将关系数据视为现实,并期望您按照自己的条件对其进行正确处理。

这两者的优点和缺点值得商榷。但是,如果你同意微软的计算机科学向导已经提出了结构化数据查询的超级抽象,那么你可能想要朝着这个方向前进。有迹象表明其他软件产品供应商愿意参与其中,因此它甚至可能不会完全专有,这将是一件好事。

答案 2 :(得分:7)

这两种技术之间存在相当大的差异,这些差异无法在简短的SO帖子中真正涵盖,但我将尝试涵盖这些亮点

  • 在Linq2Sql中,您可以在内存对象中编写查询。虽然你编写的代码被翻译成表达式树,但在实际运行查询的运行时进一步转换为SQL。在ADO.Net中,您可以直接构建针对服务器运行的SQL查询。
  • Linq2Sql在C#和VB.Net中有直接的语言支持。 ADO.Net为基于字符串的查询提供支持,除了原始字符串之外,它还支持0种语言。
  • Linq2Sql中的语言支持使查询类型安全。在ADO.Net中,必须将所有查询结果转换为适当的类型,从而基本上删除类型安全检查。

答案 3 :(得分:2)

另外,我不确定我是否在这里。但是ADO.NET总是与你的数据“离线”工作。我认为LINQ2SQL正在与您的数据联机。

答案 4 :(得分:1)

ADO.NET是一组类库,它们在.NET Basic类库之上提供基本的数据访问基础结构。它还包含基本的LINQ基础结构,例如Enumerable的静态类(提供LINQ to Object)和用于对IQueryable等关系数据进行基本查询的接口。

LINQ to SQL不是数据访问框架。

ADO.NET可以被假定为数据访问框架,但这可能会产生误导,因为ADO.NET不是一个独立的产品。 ADP.NET确实是.NET Framework的一部分。

LINQ to SQL只是LINQ的一个实现,它可以作为连接并直接映射到SQL Server的数据提供程序。在LINQ to SQL下面,包含System.Data.SqlClient命名空间中ADO.NET类的大量用法,因此它在ADO.NET之上实现,但专注于访问SQLServer。

答案 5 :(得分:1)

  

下图提供了ADO.NET LINQ的概述   技术涉及高级编程语言和   支持LINQ的数据源。

     

LINQ and ADO.NET http://i.msdn.microsoft.com/dynimg/IC176601.gif

     

来自http://msdn.microsoft.com/library/vstudio/bb399365

LINQ可帮助您将ADO.NET集成到编译器可以评估的代码部分,并帮助您使用IntelliSense等。 因此,使用LINQ,您可以更轻松地使用ADO.NET ...