在我的WPF 4桌面应用程序中,我使用通过ADO .NET实体数据模型连接到SQLServer 2008 R2(edmx),我注意到,当我第一次开始应用程序(冷启动)时间过长(约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="Data Source=.\SQLEXPRESS;Initial Catalog=DB;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
我的疑问:
1.它是一个小的基本WPF应用程序的正常行为(300 kb的可执行文件,没有繁重的计算)建立连接到本地SQL Server约10-13秒?我想,我的硬件不是那么现代,但无论如何,10秒...
1.您能否为我提供一些解决方案,以提高首次连接到SQL Server的性能?
经过长时间的第一次连接,程序工作正常,没有一些性能问题。
2条答案
按热度按时间kxeu7u2r1#
我知道在使用SQL Server的WCF上的n层应用程序中的这种“性能不佳”行为。虽然10-13秒真的很烦人,而且相当极端。我所做的是将连接踢到WCF服务,然后将SQL Server连接踢到一个对WCF服务的虚拟调用中,并将SQL Server选择查询(使用EF)踢到闪屏中。
这样,最终用户就不会经历这种首次启动延迟。当最终用户实际上想要查看/获取数据时,应用程序是响应性的。
虽然这实际上并不能“解决你的问题”,但这是一个很好的变通办法/掩盖;)
ki1q1bka2#
这在很大程度上取决于模型的复杂性;如果它相当复杂,则为其生成视图可能会导致一些延迟。您可以在构建时预先生成视图,如here所述。