【发布时间】:2014-04-01 13:26:52
【问题描述】:
我使用 EF5 开发了一个应用程序,我想知道如何配置不同的连接字符串(例如本地和实时)。 我知道所有的connectionsString都在app.config文件中:
<connectionStrings>
<add name="MandatsEntitiesLocal" connectionString="metadata=res://*/MandatsModel.csdl|res://*/MandatsModel.ssdl|res://*/MandatsModel.msl;provider=System.Data.SqlClient;provider connection string='data source="localhost";initial catalog="UIVB Tests";user id=sa;password=***;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
<add name="MandatsEntities" connectionString="metadata=res://*/MandatsModel.csdl|res://*/MandatsModel.ssdl|res://*/MandatsModel.msl;provider=System.Data.SqlClient;provider connection string='data source="rmsi.net";initial catalog="UIVB Tests";user id=sa;password=***;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
</connectionStrings>
我也知道我可以使用 DbContext 构造函数在 2 个不同的连接之间切换:
Partial Public Class MandatsEntities
Inherits DbContext
Public Sub New()
MyBase.New("name=MandatsEntities")
End Sub
Public Sub New(connectionName As String)
MyBase.New(connectionName)
End Sub
End Class
但我需要修改自动生成的类(我认为不推荐)
所以,总结一下,如果我有 10 个上下文和 2 个数据库,我需要管理 20 个 connectionString !!! 我需要修改自动生成的类
有什么方法可以正确地做到这一点吗?最佳做法是什么?
【问题讨论】:
-
通常不同的环境连接字符串是通过 web.config 转换处理的。当您为另一个环境构建/部署时,它会自动为您转换配置。您需要在开发过程中访问所有环境吗?
-
这是一个独立的应用程序,不是网络应用程序 ;-)
-
@Cooxkie 使用 post/pre-build 事件的 app.config 有类似的概念
标签: .net vb.net entity-framework