如果要在数据库中编写非常消耗资源的SQL查询以获取数据。是否建议使用实体框架通过存储过程调用来获取数据,还是应该坚持使用ADO.NET
答案 0 :(得分:1)
SQL脚本是一个SQL脚本,无论是由谁编写或生成的。如果用最佳代码实现存储过程,则它将运行良好。如果您的脚本中有不必要的浪费操作,那么它将不能很好地执行。如果脚本是使用Entity Framework生成的,并且运行良好,那么按原样使用它就不会有问题。如果效果不佳,那么要获得良好的性能,就需要一个存储过程。
当您怀疑由Entity Framework生成的脚本是否运行良好时,则需要执行以下步骤:
我已经很长时间没有使用.NET和EF了,但是据我所记得,在许多情况下,它倾向于一个接一个地收集记录,即使它们可以对每个记录执行单独的查询通过单个查询来收集,这大大增加了复杂性。
因此,简而言之,EF在许多情况下都表现良好,但是,如果您遇到速度慢的情况,则如上所述,您需要找出其原因。您将要检查生成的脚本,以查看当单个脚本可能已返回所有n个所需记录时,是否编写n个脚本来获取n条记录。在这里,您可以看到收集生成的查询的方式:How do I view the SQL generated by the Entity Framework?
答案 1 :(得分:0)
EntityFramework / EntityClientDataProvider的主要职责是将LINQ-to-Entities或Entity SQL查询转换为基础数据库可以理解的SQL查询。它与ADO.Net数据提供程序通信,后者再从数据库发送或检索数据。最后,它使用ADO.Net数据提供程序通过标准ADO.Net与数据库进行通信
因此,您的问题的答案是:计算功耗不会改变。
看看EF体系结构图。 EF Overview