我想知道与使用普通的旧 ado.net DataReader 和 DataTable 相比,在执行以下操作时是否存在性能损失:
using(DBEntities dbEntities = new dbEntities)
{
ObjectResult<tblCustomers> customers =
dbEntities.ExecuteStoreQuery<tblCustomers>("SELECT name,id FROM tblCustomers");
}
我还想使用 dbEntity 运行存储过程。
我提到这个是因为我正在开发一个对性能高度敏感的应用程序,但仍然想使用 Entity Framework 。
此外,任何人都可以向我指出 linq to entities 在 .net 4.0 上编译查询的最新性能测试吗?
编辑
如果我使用 ado.net,我计划将从每一行获得的结果手动插入到 .net 对象中。所以它是 Entity Framework storequery/sproc vs ado.net + 手动创建数据并将数据插入 .net 对象。
最佳答案
是的,当然 - 这是一种比普通 ADO.NET/SQL 更高级的方法。
您发送一个 SQL 查询并返回一个 tblCustomers
对象列表。沿线的某个地方,将发生从数据库的行/列到对象的映射,这确实需要一些时间。
另一方面 - 如果你想自己做同样的事情,你也将不得不付出性能代价 - 或者你只是使用旧式的行/列来完成你的工作(不是 推荐!)。
这是经典的“便利性与性能”权衡 - 哪个对您更重要?能够使用漂亮的 C# 对象及其属性进行编程并作为程序员非常高效 - 或者从数据库中选择几纳秒?这是你的选择....
关于c# - Entity Framework 运行存储过程和 native 查询性能注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311977/