您可以使用FenixRepo庫(也可作爲nuget package)創建特定的表格,這是您的一部分Context
。首先,您應該在啓動時調用一次static
Initialize
方法,其中第一個參數是工廠方法,它返回您的Context
的實例,第二個參數是Configuration
class
的實例。它將爲您的所有表格準備SQL腳本,在Context
處註冊。在ASP.NET MVC的情況下,它是一個很好的決定,將此代碼粘貼到Global.asax中:
FenixRepositoryScriptExtractor.Initialize(() => new Context(), new Configuration());
然後你就可以創建所需的類型MyTable
這種簡單的方式表:
var repo = new FenixRepositoryCreateTable<MyTable>();
//or repo = new FenixRepository<MyTable>();
repo.CreateTable();
而且,如果你的表格在多個遷移之間傳播,並且他們沒有任何東西與其他表格相對應,則可以通過FenixAttribute
指定這些遷移(即遷移文件夾中的類別名稱),並且它們將被用作SQL腳本的來源,用於創建表格:
[Fenix(nameof(Initial), nameof(MyTableFirstMigration), nameof(MyTableSecondMigration))]
public class MyTable
{
//some stuff
}
沒有此屬性,庫將使用默認腳本。指定遷移總是比較好,因爲否則不能保證所有索引都將創建,並且在遷移過程中,您可以包含一些自定義代碼,在默認解決方案的情況下不會執行。
庫在MS SQL的情況下與EF 6.1.3兼容和測試。
嗯,我想如果沒有初始數據庫連接到連接字符串,我想什麼?我只是從它刪除最初的目錄片斷並收到相同的無效對象名稱'dbo.Movies'錯誤。 – Pieces 2012-03-26 14:31:46
連接字符串告訴它在哪裏創建數據庫。它不一定存在。它會檢測到它不存在,然後嘗試創建它,如果它不存在。只要它具有正確的權限,一切都會創建正常。我想如果你刪除數據庫並保留相同的連接字符串,那麼一切都將以你想要的方式工作。 – Dismissile 2012-03-26 14:33:23
哦,非常感謝你!最後一個問題是,您建議將Database.SetInitializer放在哪個方法中。我得到一個錯誤,它無法刪除數據庫,因爲它正在使用中。我會通過應用程序來推測它的自我。再次感謝,我的朋友和我花了很多時間尋找解決問題的方法,並且從來不會猜測數據庫不應該被創建。 – Pieces 2012-03-26 14:38:07