Entity Framework 中的连接字符串

Connection strings in Entity Framework

我正在使用 Entity Framework.

在 ASP.NET 中引用 2 个数据库

在我的 web.config 文件中,我可以看到 2 个数据库的连接字符串:

<connectionStrings>
    <add name="RContext" 
         connectionString="metadata=res://*/Models.RModel.csdl|res://*/Models.RModel.ssdl|res://*/Models.RModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\SQLEXPRESS;initial catalog=RStreamline;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
    <add name="CEntities" 
         connectionString="metadata=res://*/Models.CModel.csdl|res://*/Models.CModel.ssdl|res://*/Models.CModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\SQLEXPRESS;initial catalog=RStreamline;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

我能否以某种方式实现备用连接字符串,其中数据源指的是发布的产品服务器?

这通常用 web.config transforms 处理。

在您的项目中,您将拥有:

  • web.config
  • web.Release.config

例如,在您的 web.Release.config 转换中,您会有这样的内容:

<?xml version="1.0"?>
<configuration xmlns:xdt="https://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="RContext" 
      connectionString="RContext-Prod-Connection-String" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="CEntities" 
      connectionString="CEntities-Prod-Connection-String" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>

您会注意到 xdt:Transform="SetAttributes" xdt:Locator="Match(name)" 位,它表示,在主要 web.config 中按名称查找 connectionString 并将其属性替换为此处定义的属性。

这将在您发布应用程序时自动发生。