哪一个提供更好的性能?ADO.NET或实体框架.
这是我想要分析的两种方法.
ADO.NET测试方法
public void ADOTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
using (SqlConnection con = new SqlConnection(connection))
{
string Query = "select * from Product ";
SqlDataAdapter da = new SqlDataAdapter(Query, con);
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
}
stopwatch.Stop();
Console.WriteLine("ADO.NET Time Elapsed={0}", stopwatch.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
实体框架测试方法
public void EFTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
var list = _OnlineStoreEntities.Products.ToList();
stopwatch.Stop();
Console.WriteLine("Entity Framework Elapsed={0}", stopwatch.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
导致首次执行
当我运行上述方法超过100次.平均执行时间显示在图像中:

无论实体框架花费超过4毫秒,ADO.NET只用了2毫秒.
导致第二次执行
当我一次又一次地运行这个方法时.ADO.NET和EF之间的平均执行时间并不多:

题
希望这不是一个愚蠢的问题.我一直在寻找两天来模拟我的行为上的system.web.security.roles的调用.
我希望我的单元测试是隔离的,不需要调用外部资源,例如角色得到存储的数据库.
我发现的所有答案都建议创建一个自定义角色提供者,但我更喜欢模仿假货的创建.
我得到的最接近的是这个解决方案 但我没有找到一种方法让ninject在测试之外运行项目时将默认角色Provider传递给构造函数.
我知道Mock类型为此提供了一个更简单的解决方案,但我使用的是犀牛模拟,现在改变太晚了.
我在web.config文件中有这个设置:<sessionState timeout="540" />.这会尝试使所有会话在8小时后过期.但是,会话到期要快得多,并且我得到的对象引用未设置为对象错误的实例.有些人可以告诉我是否有其他因素会影响会话?
提前致谢!
尝试通过C#连接到SQL数据库时出错:
SqlConnection sqlc = new SqlConnection("Server=sql09.freemysql.net,3306;Database=rekklamirajmee;Uid=trubilord;Pwd=******;");
sqlc.Open()
Run Code Online (Sandbox Code Playgroud)
通过HeidiSQL连接时,一切正常,具有以下设置:

默认为高级.
我一直试图修复它,已经谷歌超过一个小时,但我似乎无法解决它;
c# ×3
ado.net ×1
asp.net ×1
mocking ×1
ninject ×1
performance ×1
roleprovider ×1
sql ×1
unit-testing ×1