根据构建配置使用一个具有不同值的连接字符串。这是通过配置文件转换来实现的。
在Web.config中使用
<connectionStrings>
<add name="Foo" connectionString="DefaultConnection" />
</connectionStrings>
如果Web.Release.config使用
<connectionStrings>
<add name="Foo" connectionString="ServerConnectionString"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
当您在 Release 配置中构建项目时,Web.config将具有Foo连接字符串,其值为ServerConnectionString
。
此外,我建议您使用SlowCheetah包,它允许您根据构建配置转换您的 app.config 或任何其他 XML 文件。
正如我在评论中提到的,如果您出于某种原因不想依赖构建配置,那么您可以向您的依赖注入框架(Unity、Ninject 等)询问正确的参数。这是 Ninject 的示例:
Bind<IFoo>().To<Foo>().WithConstructorArgument("bar",
context => IsLocalMachine ? "DefaultConnection" : "ServerConnectionString");
当 Foo 将被实例化(在您的情况下为 DbContext )时,适当的字符串将被传递给构造函数:
public class Foo : FooBase, IFoo
{
public Foo(string bar) : base(bar)
{
}
}