[英]How can I alter a model to set the SQL default date when using EF code migrations
[英]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.