我一直在研究一个项目,现在有一个生产版本运行在共享主机环境和一个在我的开发机器上。 这里的问题是,每次我想在我的开发机器上运行应用程序时,我将不得不修改连接字符串设置以指向开发机器上的localDb,反之亦然,当我想要发布时。 对我来说,这变得非常不方便,直到我想出至少能够完美工作的解决方案。 我的问题是,这是我的解决方案专业和可靠的Aspnet环境?或者有没有一种更好的方法可以更好地实现这个解决方案?谢谢。详情请参阅代码。AspNet Mvc自动选择ConnectionString
//Created a static method in Global.asax.cs
/// <summary>
/// Returns Connection settings based on the machine. i.e, automatically select connection strings if it's development or live server
/// </summary>
/// <param name="ArrayIndex"></param>
/// <returns> string BaseConn = (connectionstring name) </returns>
public static string
Settings(int ArrayIndex)
{
string[] BaseConn ={ HttpContext.Current.Request.IsLocal ? System.Configuration.ConfigurationManager.ConnectionStrings[4].Name :
System.Configuration.ConfigurationManager.ConnectionStrings[1].Name,
//Identity database connections
HttpContext.Current.Request.IsLocal ? System.Configuration.ConfigurationManager.ConnectionStrings[5].Name :
System.Configuration.ConfigurationManager.ConnectionStrings[2].Name,
//store database connection
HttpContext.Current.Request.IsLocal ? System.Configuration.ConfigurationManager.ConnectionStrings[6].Name :
System.Configuration.ConfigurationManager.ConnectionStrings[3].Name,
};
return BaseConn[ArrayIndex];
}
然后我打电话的DbContext类中的方法遵循
public class MyAppDb :DbContext
{
public MyAppDb()
: base(MvcApplication.Settings(0))
{ }
// Some entity tables here
}
我做了商店的DbContext和身份的DbContext相同。 在本地和现场机器上,一切看起来都很棒。尽管我无法使用codefirst迁移使用此解决方案更新数据库。至少现在不是问题。
非常感谢您使用基于Codebased的时间。这似乎是标准的做法。我应该使用这个而不是我自己的解决方案,尽管工作没有任何错误。 – codein 2014-09-10 19:51:04