繁体   English   中英

为什么会出现EF5的“审核注销”事件,而EF5则需要大约3秒钟?

[英]Why is the Audit Logout event for EF5, taking ~3 seconds for EF5?

我正在尝试提出一套概念建议,以将我们自己的ORM解决方案更改为EntityFramework 5,我遇到的第一个问题似乎是一个严重的阻碍。

EF5似乎比常规的sql需要更长的9倍的时间来执行标量sql操作,但是当我查看生成的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:

SELECT TOP (1) 
[Extent1].[SurveyID] AS [SurveyID]
FROM [dbo].[Survey] AS [Extent1]
WHERE [Extent1].[Deleted] <> cast(1 as bit)

Adhock: Select top 1 surveyId from Survey where deleted = 0

加载surveyId:1至Linq 使用EF5耗时2965.8625ms

通过AdHock SQL加载surveyId:1 花费了384.8073ms

根据事件探查器,两者之间的持续时间对于EF5为1毫秒,而对接点为0毫秒。 问题似乎出在哪里,这是EF5Audit Logout事件,大约需要3秒钟,而我的广告版sql相同的注销事件大约需要0.6秒

是什么导致EF5的巨大开销,我该怎么做以缓解或解释这一问题?

每个应用程序域仅进行一次初始化。 根据模型的复杂程度以及首次连接数据库所花费的时间,可能会花费一些时间。 您可以在我的博客上看一下此评论,该评论简要讨论了Visual Studio Code Gallery上的初始化Entity Framework Code First View生成模板-Comment#249 也是此页面:您可能需要查看Entity Framework 5的性能注意事项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM