ORM到底哪家強? 很多人都想知道這個問題,自已也沒測試過,只能道聽途說。
閑的無聊就將幾個ORM拿出來比一比,假如懷疑測試代碼有問題可以將它下載下來慢慢研究。
參賽ORM
1、SqlSugar:是一款輕量級的MSSQL ORM ,除了具有媲美ADO的性能外還具有和EF相似簡單易用的語法,地址:http://www.cnblogs.com/sunkaixuan/p/5654695.html
2、Dapper ORM : 是一個輕型的ORM類。代碼就一個SqlMapper.cs文件,主要是IDbConnection的擴展方法,官方站點http://code.google.com/p/dapper-dot-net/ ,也可以通過Nuget進行安裝
3、EF6.0: .NET官方ORM
測試結果:
從測試代碼可以看出 SqlSugar Dapper 的性能都是差不多的,EF就有些不盡人意
將EF改成AsNoTracking又測了幾次,【查詢所有】性能有所提升但是還是最慢, 查詢單條和分頁AsNoTracking貌似沒什么效果
總結:
SqlSugar繼承了 EF的功能功能,也有Dapper的性能,是一款非常強大的ORM
SqlSugar 4.0 三表查詢並分頁
int total=0;
var list8 = db.Queryable<Student,School,School>((st,sc,sc2) =>st.SchoolId ==sc.Id&&sc.Id ==sc2.Id)
.Select((st, sc, sc2) =>new{st.Name,st.Id,schoolName = sc.Name})
.ToPageList(1, 2,ref total)
EF 二表查詢並分頁
var
queryable = (
from
a
in
StudentList
join
b
in
SchoolList1
on
a.Id
equals
b.Id
into
b1
from
b2
in
b1.DefaultIfEmpty()
select
new
{
a.Id,
a.Name,
t = b2.Name
});
var
listp = queryable.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
var
total = queryable.Count();
從上面的語法可以看出兩者之前的差距,3表查詢比EF2表查詢還要簡潔
代碼下載
https://github.com/sunkaixuan/SqlSugar