LINQ to Entities和ADO.Net的比较

3

LINQ to Entities能完全替代ADO.Net技术吗?

我真正想知道的是,使用LINQ是否可以实现ADO.Net提供的所有功能和特性?谁是老大?


2
我想你是指 LINQ-to-EntityLINQ-to-SQL,所以答案是否定的,ADO.NET 是一种比较底层的技术。你仍然可以在速度上做一些改善(但并不显著),并且适用于一些旧的模式。你的问题类似于 C# 能取代 C++ 吗? 据我所知,LINQ-to-Entity 是建立在 ADO.NET 之上的。 - King King
我的问题是关于使用Linq-to-Entity和纯ADO.Net编码访问数据库之间的区别。 - Rajshekar Reddy
5
Linq2Entity是一组类,它隐藏了ado.net调用、数据与代码映射以及许多其他内容。Linq2Entity帮助我们以不那么“低级”的方式访问数据库数据。因此,真正的答案是“ADO.NET是老大”。 - Dmytro Rudenko
3个回答

4

由于您在评论中提到的是LINQ to Entities,所以我会这样回答:

LINQ to Entities内部使用ADO.Net,因此它无法替换ADO.Net,因为它使用它。但是我假设您想问的是,您是否可以在使用ADO.Net的所有情况下都使用LINQ to Entities。答案是否定的。

有些情况下,您不希望(或无法)使用LINQ to Entities。例如,如果您处于需要更好查询性能的某种情况下,则最好使用存储过程。通常,当开发人员生产力比查询执行速度更重要时,LINQ to Entities是更好的选择。其他不适合使用LINQ to Entities的情况是,例如数据库设计不良且没有主键等。

但我认为主要的问题是:在您的情况下哪个更重要?开发人员生产力还是性能?我认为同时使用两种技术也是可以接受的。使用LINQ to Entities完成项目,如果存在性能问题,请使用存储过程或ADO.Net。

此外,我不会在大型查询或具有许多连接的查询中使用LINQ to Entities,因为连接的LINQ语法不太简洁,并可能影响代码的可读性。


1
谢谢。这篇文章足够简短。 - Rajshekar Reddy

1

@Reddy,选择使用哪种技术完全取决于场景。ADO.NET 使用 DataSet 作为重点提供元组结构,与 LINQ-Entity 等 ORM 技术相比,即使在今天仍被广泛使用。当应用程序的主要方面围绕记录处理时,我会使用 ADO.NET,例如在 SSIS 管道中使用;但是当我主要遵循测试驱动开发或领域驱动开发方法时,我会坚持使用 LINQ-Entity。


0

1) ADO.NET是数据库连接技术,因此我们可以使用ado.net仅与数据库进行操作,但如果我们需要从非数据库数据源(如xml、集合等)获取数据,则不可能。 但是使用LINQ可以从许多数据源(如集合、XML文件、实体,甚至包括数据库)中获取数据。

2) 但就性能而言,ADO.NET比任何其他数据库连接技术都要快得多。

3) 如果您选择使用LINQ,运行时错误可以被纠正,因此错误会更少,可靠性也会增加。

  so ADO.NET vs LINQ technologies both having their own positives and negative features ,Microsoft given huge amount of featured technologies, so according to the application requirement we need to go with that technology.

让我来修正一下:1.和2.不是真的。ADO.NET只是一个框架,它提供了许多使用数据驱动程序(OLE DB、ODBC)操作数据的方法。只要驱动程序能够处理,您可以使用任何数据源。3.由于强类型方法,Intely-sense是您所说的内容,可靠性却值得怀疑。 - st35ly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接