一般分两类,
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框架,这样开发起来事半功倍。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)