在第一次应用程序启动时打开与SQL Server的连接太慢

问题描述 投票:1回答:2

在我的WPF4桌面应用程序中,我通过ADO.NET实体数据模型(edmx)使用与SQL Server 2008 R2的连接,我注意到,当我第一次启动应用程序(冷启动)时需要很长时间(约10秒)直到应用程序建立(打开)连接到DB并且可以执行基本的LINQ查询(没有连接,表格真的很小)并在DataGrid控件中显示结果。

SQL Server 2008 R2安装在我的本地PC上,因此网络负载没有问题。

我构建SQL连接的方式(在外部线程中):

    public static DBEntities dbContext = new DBEntities();
    dbContext.Connection.Open();

连接配置:

    <connectionStrings>
        <add name="DBEntities" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;Initial Catalog=DB;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>

我的问题是,小型基本WPF应用程序(300 kb可执行文件,没有大量计算)的正常行为与本地SQL Server建立连接大约10-13秒?

我想,我的硬件不是那么现代,但无论如何,10秒......

你能否提出一些解决方案来提高第一次连接SQL Server的性能?

附:经过长时间的第一次连接程序工作正常,并没有一些性能问题。

sql-server wpf performance database-connection ado.net-entity-data-model
2个回答
2
投票

我知道在使用SQL Server的WCF上的n层应用程序中的这种“性能不佳”行为。虽然10-13秒真的很烦人且非常极端。我所做的是启动与WCF服务的连接,从而将SQL Server连接转换为对具有SQL Server选择查询(使用EF)的WCF服务的虚拟调用到启动画面中。

这样终端用户就不会遇到第一次启动延迟。当最终用户实际想要查看/获取数据时,应用程序是响应的。

虽然这实际上并没有“解决你的问题”,但这是一个很好的解决方法/掩盖;)


1
投票

这在很大程度上取决于模型的复杂性;如果它相当复杂,为它生成视图可能会导致一些延迟。您可以在构建时预先生成视图,如here所述。

© www.soinside.com 2019 - 2024. All rights reserved.