SqlSugar、Freesql、Dos.ORM、EF、四种ORM框架的对⽐
1、什么是ORM?
答:ORM(Object-relational mapping)即对象关系映射,是⼀种为了解决⾯向对象与关系数据库存在的互不匹配的现象的技术。也就是说,ORM是通过使⽤描述对象和数据库之间映射的元数据(映射⽂件信息),将程序中的对象⾃动持久化到关系数据库中。说⽩了就是将相应的实体映射到相应的数据库表,然后使⽤orm框架封装好的api进⾏数据库访问,减少了⾃⼰写数据库访问类的步骤。
2、ORM框架的优缺点是?
答:ORM框架的优点:(1)操作简单,提⾼开发效率。(2)⽀持⾯向对象封装。(3)可移植。(4)减少重复性代码
ORM框架的缺点:(1)处理多表联查之类的查询时,ORM的语法会变得很复杂。(2)执⾏性能较低(但现在有⼀些轻型ORM框架,性能接近原⽣SQL)。
2、四种框架的基本信息对⽐如下表:
框架/
对⽐
属性
SqlSugar Dos.ORM Freesql EFCodeFirst
⽀持数据库类型MySql、
SqlServer、
Sqlite、Oracle 、
postgresql
MySql、SqlServer、Sqlite、Oracle 等
数据库
MySql、
SqlServer、
Sqlite、Oracle 、
postgresql
MySql、SqlServer、Sqlite、
Oracle 、 postgresql
⽀持
的平
台版
本
和net core和net core和net core和net core
团队
规模
公司性质公司性质个⼈微软
体积895k(下载后
package的⼤⼩)
607k(下载后package的⼤⼩)
558k(下载后
package的⼤⼩)
17.8M
⽂档帮助较全(install后,
就可以直接使⽤
了)
⼀般(但是很多细节的东西并没有告知
⽤户,例如需要通过代码⽣成器⽣成的
实体类才能与数据库进⾏映射)
较全(install后,
创建数据库即可直
接使⽤)
较全(⽆论是微软官⽅还是百度⾕
歌,⽤的⼈⽐较多,遇到问题容
易)
与数
据库交互⽅式⽀持dbfirst、
codefirst⽀持dbfirst
⽀持dbfirst、
codefirst
⽀持code first(当前使⽤的是code
first,也可⽀持dbfirst)
学习成本低⼀般低
较⾼(刚开始使⽤会遇到许多的
bug,虽然⽹上都有解决⽅法,但
是学习起来没前⼏种容易)
3、四种框架的耗时情况如下:
如下表格,展⽰的是四种ORM框架Crud的性能,其中,(1)增查删改都是循环5次,每次增删改1万条数据,查询是每次查询10万条数据,取5次的平均值;(2)批量增删改都是循环5次,每次增删改10万条数据,取5次平均值:
类别/框架名称Freesql(单位:秒)DOS.ORM(单位:秒)EF(Code First)(单
位:秒)
SqlSugar(单
位:秒)
新增(Insert)13.906313.5712273.56312.4268删除(Delete)13.668813.336665.132812.4202修改(Update)14.370414.330654.02112.084查询(Select) 1.75020.23080.54860.1416批量新增
(BulkInsert)
1.4382秒20.6162秒27.6674秒 1.4286秒批量修改 3.5988秒(不⾜以⽤来参照,看
批量修改(BulkUpdate)3.5988秒(不⾜以⽤来参照,看
下⾯注解)
22.6556秒22.1634秒 3.8188秒
批量删除(BulkDelete)0.7504秒(不⾜以⽤来参照,看
下⾯注解)
只能批量删除2009条,超
过就报错
20.336秒0.7034秒
由上表可知,各种框架CRUD的性能如下(由快到慢):
(1)循环CRUD操作的性能如下:
新增:SqlSugar>DOS.ORM>Freesql>EF
删除:SqlSugar>DOS.ORM>Freesql>EF
修改:SqlSugar>DOS.ORM>Freesql>EF
查询:SqlSugar>DOS.ORM>EF>Freesql
综上可知:SqlSugar框架的CRUD性能是最⾼的,其中EF除了查询⽐较快之外,删改所花费的时间都是其他三种框架的4~5倍,⽽新增就是20倍左右!
(2)循环批量CRUD的性能如下:
批量新增:Freesql=SqlSugar>DOS.ORM>EF
批量修改:Freesql=SqlSugar>EF>DOS.ORM
批量删除:Freesql=SqlSugar>EF
注解1:Freesql是有批量新增的⽅法BulkInsert,故其批量新增操作与其他框架⼀样。但是,Freesql没有批量修改、删除的⽅法,如下代码⽚段:
•
•
•
•
•
•
•
//下⾯的n表⽰1~5,是循环执⾏的次数,在上⾯的Insert步骤中分配插⼊了1万条"Freesql测试的数据1"、"Freesql测试的数据2"、"Freesql测试的数据3"、"Freesql测试的数据4"、"Freesql测试的数据5" //Freesql只能通过lamdba表达式匹配到的数据进⾏删改,⽽不能直接在update中添加⼀个list context.Update<ORMTest>( a=> a.Name == "Freesql测试的数据"+ n, a=> newORMTest { Name = "Freesql修改的数据"+ n }); context.Delete<ORMTest>( a=> a.Name == "Freesql修改的数据"+ n);
注解2:DOS.ORM批量删除超过2009条数据时就会报错,如下图:
综上,只有SqlSugar涵盖的⽅法⽐较多,⽽且速度也较快!
4、四种框架都⽀持哪些功能?
功能/框架FreesqlDOS.ORM EF SqlSugar
增删查改⽀持⽀持⽀持⽀持
批量增删改⽀持⽀持⽀持⽀持
事务、存储过程、⽇志⽀持⽀持⽀持⽀持
lamdba、执⾏SQL⽀持⽀持⽀持⽀持
linq⽀持不⽀持⽀持不⽀持
多表查询、分组查询⽀持⽀持⽀持⽀持
多表查询、分组查询⽀持⽀持⽀持⽀持
全局过滤器⽀持不⽀持⽀持⽀持
联表⼦查询不⽀持不⽀持⽀持⽀持
查询返回格式⼀般⼀般⽐较多⽐较多
答:四种框架都⽀持:
基本查询、多表查询、分组查询、批量增删改操作、存储过程、事务、执⾏SQL、⽇志等功能。
5、就个⼈使⽤⽽⾔,⽐较推荐哪个框架?
答:个⼈⽐较推荐SqlSugar,原因如下:
(1)只要下载了SqlSugar包后,就可以直接按照官⽹的例⼦进⾏编码,⽇志跟踪⽅⾯我认为是最简单已⽤的,且⽂档写得⽐较好、可由代码⽣成数据库,可以快速上⼿。
(2)Freesql与SqlSugar差不多,但是由于我觉得SqlSugar⽇志跟踪⽅⾯做得⽐较好且可以由代码⽣成数据库,且Freesql对批量操作的⽀持不是很好,只能批量新增(且没有返回值),不能批量删除、修改,所以我才选择SqlSugar:
mysql下载不了什么原因(3)Dos.ORM是这三个框架⾥⾯最不好上⼿,***不能***直接⾃⼰创建类⽂件,⽽是需要下载官⽹推荐的***代码⽣成器***去⽣成相应的类,然后才能进⾏数据库的访问,否则插⼊删除等操作都会报错,所以就个⼈⽽⾔,不推荐⽤这个,认为学习成本⽐其他两个⾼。
(5)四种框架中,SqlSugar进⾏CRUD的性能最⾼,⽽EF最慢。
更多优秀开源框架:
.NET 5企业级框架Furion
BCVP(Blog.Core&Vue Project)
开箱即⽤的企业级前后端分离【 .NET Core3.1 Api + Vue 2.x + RBAC】权限框架。
通⽤后台+权限+菜单
Meiam.System - NET Core 3.1 WebAPI + Vue 2.0 + RBAC
开源免费WMS仓库管理系统
.NET Core 微服务快速开发框架 Viper
飞易腾⽹络 / FytSoaCms
服务全家桶FamilyBucket应⽤框架
是⼀个集合多个组件应⽤形成的微服务⼀体化的全套应⽤框架。
博客园地址:
APIJSON.NET
后端接⼝和⽂档⾃动化,前端(客户端) 定制返回JSON的数据和结构!
版权申明:本⽂来源于⽹友收集或⽹友投稿,仅供学习交流之⽤,如果有侵权,请转告版主或者留⾔,本⽴即删除。
除。
⽀持⼩微:
腾讯云新年活动!玩服务器的可以搞搞,⽼客户也可以参加!
轻量服务器 2核4G8M80G 222元/3年
爆款1核2G云服务器⾸年38元
右下⾓,您点⼀下在看图⽚
⼩微⼯资涨1⽑
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论