gpt4 book ai didi

.net - 基于 Entity Framework 的应用程序的 SQL Server 进程过多

转载 作者:行者123 更新时间:2023-12-04 06:21:31 24 4
gpt4 key购买 nike

我们目前正在开发基于 WPF/Entity-Framework 的应用程序。我们的要求之一是允许用户选项在登录时选择他们将连接到哪个环境(测试、培训或生产)。每个连接选项都指向自己的数据库。为了做到这一点,我们通过以下方式创建新的 EF 上下文:

Public Function NewVectorContext() As VectorEntities
Dim strDBConn As String = "metadata=res://*/EntityFramework.VectorModel.csdl|res://*/EntityFramework.VectorModel.ssdl|res://*/EntityFramework.VectorModel.msl;provider=System.Data.SqlClient;provider connection string=""" & VectorConnectionString & """"

Dim EntityConn As System.Data.EntityClient.EntityConnection = New System.Data.EntityClient.EntityConnection(strDBConn)

Dim MyNewContext as VectorEntities = New VectorEntities(EntityConn)
MyNewContext.ContextOptions.LazyLoadingEnabled = False

Return MyNewContext
End Function

VectorConnectionString 以标准 SQL Server 方式格式化:
Data Source=OurDBServer;Initial Catalog=OurAppDB;Persist Security Info=True;User ID=OurUserId;Password=OurPassword

并在运行时由用户选择(测试、培训、生产)确定。

我们已确保在其工作完成后处理所有新上下文。

问题是:当用户使用该应用程序时,我们会在 SQL Server 的事件监视器中看到数百个 SQL Server 进程。一些个人用户在使用该应用程序时关联了 30 多个进程。一旦用户关闭应用程序,相关的进程就会全部消失——但是当应用程序运行时,这些进程似乎仍然存在。

最佳答案

已修复 - 正如我上面提到的,解决方案的一部分是正确的内存管理,并确保所有模型和 View 模型都被正确处理。但这只是消除了我们看到的一小部分 sql server 进程。罪魁祸首是一个设计不当的模型基类,它为每个被实例化的模型创建了多个上下文。改写之后问题就解决了。与EF无关。

关于.net - 基于 Entity Framework 的应用程序的 SQL Server 进程过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com