c# - Entity Framework 运行存储过程和 native 查询性能注意事项

标签 c# .net asp.net linq entity-framework

我想知道与使用普通的旧 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/

相关文章:

.net - 从 Orchard 内的主题渲染图像

asp.net - LINQtoSQL 和序列化

c# - 你会在哪里使用 C# 运行时编译?

javascript - 如何在asp.net中从c#执行javascript

c# - 集合无重复且有序

c# - SetFocus 通过 JavaScript 从代码隐藏进行控制

c# - 具有不同输入参数的类的工厂模式设计

c# - Xamarin 和 C++ 代码

c# - DI、IoC 的五个 W,因为它让我的大脑爆炸

c# - Visual Studio 是否有 "multimedia comments"加载项?