c#编写的代码用:linq和传统的ado.net哪个好,出错少,哪个更快,对服务器的负担最小

如题所述

你要问的是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框架,这样开发起来事半功倍。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-26
ado.net好,几乎每个方面都强一些,建议用ado.net。linq to sql写法比较怪,而且性能稍差。操作数据库还是写sql,用常规通用的操作模型比较好。本回答被提问者采纳
相似回答