覆盖默认连接字符串

时间:2012-10-02 09:40:32

标签: c# connection-string

在MVC Web应用程序中,我想基于我正在使用的开发机器覆盖连接字符串。我可以使用Web.config转换,但我还需要覆盖各种非Web配置文件中的连接字符串。我可以使用SlowCheetah extension,但最后我会为访问数据库的每个项目创建相同的转换。当项目变得更大并且有更多开发人员时,这是一个很难维护。

我想要做的是修改Entity Framework或ASP.NET查找连接字符串的方式,添加一个我自己的类来查找连接字符串,并且只实现一次转换逻辑。我希望只有在相关时才使用Ninject注入它。

是否有这样一个“IConnectionStringProvider”接口我可以实现和注册,并自动让ASP.NET和EF使用它?

EDIT。我找到this,但它看起来真的很讨厌。如果没有更简洁的方法,我只会使用多个相同的配置翻译,也许让源控制系统正确复制它们。

1 个答案:

答案 0 :(得分:1)

您可以告诉Entity Framework使用不同的连接字符串 - 它不必使用web.config中的默认字符串。

以下是一个示例:http://www.codeproject.com/Tips/234677/Set-the-connection-string-for-Entity-Framework-at

这是另一个:http://msdn.microsoft.com/en-us/library/bb738533.aspx

由你来决定如何构建其余部分。

我个人在web.config中使用app设置告诉我的代码在系统的某个特定部分使用哪个连接字符串,例如

var connectionStringNameForMyFeature = ConfigurationManager.AppSettings["connectionStringNameForMyFeature"];

myFeature.ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName];