我一直在研究一個項目,現在有一個生產版本運行在共享主機環境和一個在我的開發機器上。 這裏的問題是,每次我想在我的開發機器上運行應用程序時,我將不得不修改連接字符串設置以指向開發機器上的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