Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么EF5的审核注销事件需要约3秒的时间?_Sql_Entity Framework_.net 4.5 - Fatal编程技术网

Sql 为什么EF5的审核注销事件需要约3秒的时间?

Sql 为什么EF5的审核注销事件需要约3秒的时间?,sql,entity-framework,.net-4.5,Sql,Entity Framework,.net 4.5,我正试图整理出一套将我们自己开发的ORM解决方案更改为EntityFramework5的概念,我遇到的第一个问题似乎是一个严重的问题 EF5似乎比ad hock sql执行标量sql操作的时间要长约9倍,但当我查看生成的sql代码时,sql本身似乎编写得相当好,运行速度也很快 我的C代码适用于以下两种情况: int surveyId = (from survey in upsEntities.Surveys where !survey.Deleted select survey.SurveyI

我正试图整理出一套将我们自己开发的ORM解决方案更改为EntityFramework5的概念,我遇到的第一个问题似乎是一个严重的问题

EF5似乎比ad hock sql执行标量sql操作的时间要长约9倍,但当我查看生成的sql代码时,sql本身似乎编写得相当好,运行速度也很快

我的C代码适用于以下两种情况:

 int surveyId = (from survey in upsEntities.Surveys where !survey.Deleted select survey.SurveyID).First();
            Debug.WriteLine("Loading surveyId : {0} through Linq took {1}ms using EF5", surveyId,
                            sw.Elapsed.TotalMilliseconds);

            sw.Restart();

            string sql = "Select top 1 surveyId from Survey where deleted = 0";
            object val = SMSDataManager.Instance.DataAccessManager.ExecuteScalar(sql);

            Debug.WriteLine("Loading surveyId : {0} through AdHock SQL took {1}ms using OrmDataManager", val,
                           sw.Elapsed.TotalMilliseconds);
SQL输出: EF5:

Adhock:从已删除的调查中选择前1个调查ID=0

加载测量ID:1到Linq使用EF5耗时2965.8625ms

通过AdHock SQL加载surveyId:1耗时384.8073ms

根据分析工具,EF5和ad hock之间的持续时间分别为1ms和0ms。问题似乎出在EF5的审核注销事件中,耗时约3秒,而我的ad hock sql则为同一注销事件耗时约6秒


是什么导致了EF5如此巨大的开销,我能做些什么来减轻或解释这一点?

每个应用程序域只进行一次初始化。根据模型的复杂程度以及第一次连接到数据库所需的时间,可能需要一些时间。您可以在我的博客上看到这条评论,其中简要讨论了初始化。还有这个页面:是您可能想要查看的内容。

Linq查询是上下文中的第一个查询吗?您所观察到的可能是运行第一个查询时发生的某些初始化的结果。这是上下文中的第一个查询,如果我再复制查询两次,我会注意到接下来的两个查询速度非常快,大约为15毫秒。然而,每次我初始化一个上下文时,都会有整整3秒钟的时间,这对我来说是一段很长的时间。我的ad hock查询启动了一个新连接,但仍低于500毫秒。每个应用程序域只进行一次初始化。根据模型的复杂程度以及第一次连接到数据库所需的时间,可能需要一些时间。你可以在我的博客上看到这个关于初始化的评论。这也是你可能想看的东西。你能把它写成一个答案的形式,这样我就可以给你评分了吗?你最后的评论有效地回答了我的问题。每个应用程序域一次。。。我修改了我的单元测试来证明这一点。
SELECT TOP (1) 
[Extent1].[SurveyID] AS [SurveyID]
FROM [dbo].[Survey] AS [Extent1]
WHERE [Extent1].[Deleted] <> cast(1 as bit)