在MVC Web应用程序中,我想基于我正在使用的开发机器覆盖连接字符串。我可以使用Web.config转换,但我还需要覆盖各种非Web配置文件中的连接字符串。我可以使用SlowCheetah extension,但最后我会为访问数据库的每个项目创建相同的转换。当项目变得更大并且有更多开发人员时,这是一个很难维护。
我想要做的是修改Entity Framework或ASP.NET查找连接字符串的方式,添加一个我自己的类来查找连接字符串,并且只实现一次转换逻辑。我希望只有在相关时才使用Ninject注入它。
是否有这样一个“IConnectionStringProvider”接口我可以实现和注册,并自动让ASP.NET和EF使用它?
EDIT。我找到this,但它看起来真的很讨厌。如果没有更简洁的方法,我只会使用多个相同的配置翻译,也许让源控制系统正确复制它们。
答案 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];