簡體   English   中英

使用EF(5)代碼優先遷移時如何執行附加的數據庫初始化

[英]How can I perform additional DB initialization when using EF (5) Code First Migrations

我將ef-code-first應用程序移至code-first-migrations模型,並將數據庫初始化程序從DropCreateDatabaseIfModelChanges切換到MigrateDatabaseToLatestVersion

在我最初的初始化程序中,我正在創建一些用戶定義的函數等,並對數據庫配置進行更改(例如SET AUTO_CLOSE OFF )。 所有這些工作都是通過直接對數據庫執行SQL來實現的,因為EF不支持它。

現在,我已經轉移到遷移模型,我試圖通過將代碼添加到生成的DbMigration類的Up方法中來做很多DbMigration 此代碼使用Sql方法來注入SQL。

但是,結果是出現各種錯誤,例如:

  • 我創建用戶定義函數的SQL導致錯誤,指出CREATE FUNCTION語句必須在批處理的開始。

  • 我的ALTER DATABASE語句導致一個錯誤,表明它不能在用戶事務內使用。 (我不創建事務,但大概已經開始了)。

我該如何克服? DbMigration派生的類中,我似乎沒有訪問DbContext的權限,因此無法直接訪問數據庫。

您可以嘗試在派生的DbMigrationConfiguration重寫Seed方法(這是自定義數據庫初始化程序中原始Seed方法的最接近替代),但請注意,每次遷移數據庫時都會執行此方法,因此,您還必須包括以下檢查才能創建函數:他們不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM