我正在致力於通過我們的安裝程序創建和更新數據庫。從安裝程序自定義操作中運行實體框架遷移
該項目是一個MVC網站,因此目前數據庫配置爲在Application_Start命中時創建/更新。
初始化器設置如下:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext,Migrations.Configuration>());
中的配置:
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
我會非常喜歡,您只需設置初始化劑和從C#自定義操作直接運行它。我一直在嘗試像下面這樣的東西,但到目前爲止沒有運氣。
[CustomAction]
public static ActionResult DBSetup(Session session)
{
try
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
using (var db = new MyContext())
{
db.Database.Initialize(true);
}
}
catch (Exception err)
{
session.Log("Error setting up DB: " + err.InnerException);
session.Log("", err.Message);
return ActionResult.Failure;
}
return ActionResult.Success;
}
抓住似乎並沒有包含任何信息的異常,所以調試證明很難..
是否有人嘗試這樣做,或嘗試類似的東西和得到的東西的工作只是想知道。
我明白正是你正在嘗試做的(包括MSI/DTF portitions),但我從來沒有嘗試過這一點。勇於創新的領域,首先編寫應用程序,負責執行模式遷移,而不需要在安裝程序中執行SQL腳本。不知道我對此感覺如何,但似乎是未來,我相信我將來會繼續努力。 –