【发布时间】:2011-06-27 13:20:41
【问题描述】:
我们目前正在开发基于 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 多个进程。一旦用户关闭应用程序,相关进程就会全部消失 - 但在应用程序运行时,这些进程似乎会一直存在。
【问题讨论】:
-
问题半固定:我们的视图模型和模型并不总是被正确处理,片段显然仍然停留在内存中,这表明在 SQL Server 活动监视器中看到大量进程。通过适当的处理,我们看到创建的 sql server 进程减少了,但仍然有大量正在创建的进程 - 这正常吗?
标签: .net sql-server vb.net entity-framework