实体框架运行sprocs和本机查询性能注意事项

时间:2011-03-15 12:52:38

标签: 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运行sprocs。

我提到这一点是因为我正在开发一个性能敏感的应用程序,但仍然希望使用实体框架。

此外,有人能指出我最近对.q 4.0上的实体编译查询的linq性能测试吗?

修改
如果我使用ado.net,我计划将每行从每行获取的结果手动插入.net对象。所以它是实体框架storequery / sproc vs ado.net +手动创建和插入.net对象的数据。

1 个答案:

答案 0 :(得分:2)

是的,当然 - 这是一种比普通的ADO.NET / SQL更高级的方法。

您发送SQL查询并返回tblCustomers个对象的列表。沿着这条线的某个地方,将发生从数据库的行/列到对象的映射,这确实需要一些时间。

另一方面 - 如果你想自己做同样的事情,你也必须支付性能损失 - 或者你只需​​使用旧式行/列来完成你的工作(不< / strong>推荐!)。

这是经典的“便利与性能”权衡 - 对您来说更重要的是什么?能够使用漂亮的C#对象及其属性进行编程,并且作为程序员非常高效 - 或者从数据库中选择几纳秒?这是你的选择......