diff --git a/Src/Asp.Net/PerformanceTest/App.config b/Src/Asp.Net/PerformanceTest/App.config
index 88fa4027b..a9b16ce50 100644
--- a/Src/Asp.Net/PerformanceTest/App.config
+++ b/Src/Asp.Net/PerformanceTest/App.config
@@ -1,6 +1,20 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Asp.Net/PerformanceTest/Common/OrmType.cs b/Src/Asp.Net/PerformanceTest/Common/OrmType.cs
index 4199a0e02..b471d3577 100644
--- a/Src/Asp.Net/PerformanceTest/Common/OrmType.cs
+++ b/Src/Asp.Net/PerformanceTest/Common/OrmType.cs
@@ -9,6 +9,7 @@ namespace PerformanceTest
public enum OrmType
{
SqlSugar,
- Dapper
+ Dapper,
+ EF
}
}
diff --git a/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs b/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs
index 936e2b82b..3e2587779 100644
--- a/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs
+++ b/Src/Asp.Net/PerformanceTest/Models/TestEntity.cs
@@ -1,9 +1,10 @@
using System;
using System.Collections.Generic;
+using System.Data.Entity;
+using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-
namespace PerformanceTest
{
[Dapper.Contrib.Extensions.Table("Test")]
@@ -23,4 +24,16 @@ namespace PerformanceTest
public Guid? F_Guid { get; set; }
public string F_String { get; set; }
}
+
+ public class EFContext : DbContext
+ {
+ public EFContext(string connectionString) : base(connectionString) {
+
+ }
+ public DbSet TestList { get; set; }
+ protected override void OnModelCreating(DbModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity().ToTable("Test");
+ }
+ }
}
diff --git a/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj b/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj
index df6247265..e256d5502 100644
--- a/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj
+++ b/Src/Asp.Net/PerformanceTest/PerformanceTest.csproj
@@ -41,10 +41,19 @@
..\packages\Dapper.Contrib.1.50.0\lib\net45\Dapper.Contrib.dll
True
+
+ ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
+ True
+
+
+ ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll
+ True
+
..\SqliteTest\OtherDll\SyntacticSugar.dll
+
diff --git a/Src/Asp.Net/PerformanceTest/Program.cs b/Src/Asp.Net/PerformanceTest/Program.cs
index f941a969a..1c9ce18ff 100644
--- a/Src/Asp.Net/PerformanceTest/Program.cs
+++ b/Src/Asp.Net/PerformanceTest/Program.cs
@@ -15,8 +15,8 @@ namespace PerformanceTest
///
static void Main(string[] args)
{
- //new TestGetAll().Init(OrmType.SqlSugar);
- // new TestGetById().Init(OrmType.SqlSugar);
+ //new TestGetAll().Init(OrmType.Dapper);
+ //new TestGetById().Init(OrmType.EF);
new TestSql().Init(OrmType.SqlSugar);
Console.ReadKey();
}
diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs
index 5be88d3ef..f9e65acf9 100644
--- a/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs
+++ b/Src/Asp.Net/PerformanceTest/TestItems/TestGetAll.cs
@@ -6,6 +6,7 @@ using System.Data.SqlClient;
using Dapper;
using SqlSugar;
using Dapper.Contrib.Extensions;
+using System.Data.Entity;
namespace PerformanceTest.TestItems
{
@@ -13,6 +14,7 @@ namespace PerformanceTest.TestItems
{
public void Init(OrmType type)
{
+ Database.SetInitializer(null);
Console.WriteLine("测试一次读取100万条数据的速度");
var eachCount = 1;
@@ -27,6 +29,9 @@ namespace PerformanceTest.TestItems
case OrmType.Dapper:
Dapper(eachCount);
break;
+ case OrmType.EF:
+ EF(eachCount);
+ break;
default:
break;
}
@@ -63,5 +68,19 @@ namespace PerformanceTest.TestItems
}
});
}
+
+ private static void EF(int eachCount)
+ {
+ GC.Collect();//回收资源
+ System.Threading.Thread.Sleep(1);//休息1秒
+
+ PerHelper.Execute(eachCount, "EF", () =>
+ {
+ using (EFContext conn = new EFContext(Config.connectionString))
+ {
+ var list = conn.TestList.AsNoTracking().ToList();
+ }
+ });
+ }
}
}
diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs
index b2f3edb43..07e03b030 100644
--- a/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs
+++ b/Src/Asp.Net/PerformanceTest/TestItems/TestGetById.cs
@@ -2,6 +2,7 @@
using SqlSugar;
using System;
using System.Collections.Generic;
+using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
@@ -14,6 +15,7 @@ namespace PerformanceTest.TestItems
public void Init(OrmType type)
{
+ Database.SetInitializer(null);
Console.WriteLine("测试一次读取1条数据的速度");
var eachCount = 1000;
@@ -28,6 +30,9 @@ namespace PerformanceTest.TestItems
case OrmType.Dapper:
Dapper(eachCount);
break;
+ case OrmType.EF:
+ EF(eachCount);
+ break;
default:
break;
}
@@ -63,5 +68,20 @@ namespace PerformanceTest.TestItems
}
});
}
+
+
+ private static void EF(int eachCount)
+ {
+ GC.Collect();//回收资源
+ System.Threading.Thread.Sleep(1);//休息1秒
+
+ PerHelper.Execute(eachCount, "EF", () =>
+ {
+ using (EFContext conn = new EFContext(Config.connectionString))
+ {
+ var list = conn.TestList.AsNoTracking().Single(it=>it.Id==1);
+ }
+ });
+ }
}
}
diff --git a/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs b/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs
index 6e60b6b17..e59dca590 100644
--- a/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs
+++ b/Src/Asp.Net/PerformanceTest/TestItems/TestSql.cs
@@ -2,6 +2,7 @@
using SqlSugar;
using System;
using System.Collections.Generic;
+using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
@@ -13,6 +14,7 @@ namespace PerformanceTest.TestItems
{
public void Init(OrmType type)
{
+ Database.SetInitializer(null);
Console.WriteLine("测试SQL查询的速度");
var eachCount = 3000;
@@ -27,6 +29,9 @@ namespace PerformanceTest.TestItems
case OrmType.Dapper:
Dapper(eachCount);
break;
+ case OrmType.EF:
+ EF(eachCount);
+ break;
}
}
Console.Write("总计:" + (DateTime.Now - beginDate).TotalMilliseconds / 1000.0);
@@ -59,5 +64,19 @@ namespace PerformanceTest.TestItems
}
});
}
+
+ private static void EF(int eachCount)
+ {
+ GC.Collect();//回收资源
+ System.Threading.Thread.Sleep(1);//休息1秒
+
+ PerHelper.Execute(eachCount, "EF", () =>
+ {
+ using (EFContext conn = new EFContext(Config.connectionString))
+ {
+ var list = conn.Database.SqlQuery("select top 10 * from Test").ToList();
+ }
+ });
+ }
}
}