c#编写的代码用:linq和传统的ado.net哪个好,出错少,哪个更快,对服务器的负担最小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#编写的代码用:linq和传统的ado.net哪个好,出错少,哪个更快,对服务器的负担最小相关的知识,希望对你有一定的参考价值。
参考技术A 你要问的是c#操作数据库吧一般分两类,
1是ADO.NET,原生支持Sqlserver,引入dll后可以支持mysql oracle等数据库,
2是ORM框架,常见的EF FLUENT等,以EF为例,可以使用LINQ操作实体类,从而进行数据库操作,
然后回到你的问题,
1,出错率:
肯定是ORM的出错少,因为使用LINQ进行数据库“增删改查”,语法上的问题,编译器可以识别,而ado是要写sql语句的,sql语句是字符串类型,VS编译器是不会处理的。
如果你真正开发过较大的项目,那么你会发现纯sql是多么的讨厌,你很可能少些了一个空格,多打了一个字母,都会有问题。而且很难查到。
2,速度:
ORM的原理就是把LINQ的表达式,转换成SQL语句,然后使用ADO.NET进行数据库操作, 所以理论上ORM一定比ADO慢。
但是还是要看数据结构和书写SQL语句的人的水平, 比如分页查询这种功能,一般的SQL写法可能需要1分钟来查,对Sql熟练的高手写一个存储过程,可能只需要10秒。
3,对服务器负担:
以EF为例,每一次LINQ操作,EF都会开、关一次连接,在较复杂的查询中,EF的开销会比较大,而ADO还是要看书写的SQL水平,
总结一下:
ORM框架会大大减少DAL层的代码工作量,并且减少书写错误率,但是效率偏低。
由于ORM框架的核心还是ADO.NET,所以绝大部分ORM都有参数可以兼容我们手写SQL语句,比如EF即可以使用LINQ,也可以手写DbCommand, 所以更建议去熟悉一种ORM框架,这样开发起来事半功倍。
以上是关于c#编写的代码用:linq和传统的ado.net哪个好,出错少,哪个更快,对服务器的负担最小的主要内容,如果未能解决你的问题,请参考以下文章
具有 LINQ 关联的 C# 和 ADO .NET 实体数据模型以及同一表的实体