在Entity Framework 7中進行數據遷移


(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)

題記:雖然EF7重新設計了Entity Framework,不過也還是能夠支持數據遷移的。

Entity Framework 7是微軟ORM框架的一次重生,變得更加輕量級。因而默認情況是沒有開啟數據遷移(Migration)功能的,也即創建出來的數據庫默認不會包含“__MigrationHistory”表。在這種情況下,數據模型的變更,需要你手動(通過SQL腳本)去修改對應的數據庫結構。當然,你還是可以啟用自動的數據遷移功能的。

Mostafa Asaduzzaman在CodeProject上分享了一篇文章,圖文並茂的講解了如何在Entity Framework 7中進行數據遷移。大致步驟如下:

1,在project.json中引用EntityFramework.Commands包

   1: "EntityFramework.Commands": "7.0.0-beta4"

2,在project.json中添加“ef”的命令:

   1: "commands": {
   2:        "ef":  "EntityFramework.Commands"
   3:   },

3,變更數據模型之后,在項目文件夾中執行如下命令來添加新的遷移代碼:

   1: dnx . ef migration add newBook

4,運行遷移代碼:

   1: dnx . ef migration apply

更詳細的內容,可以“閱讀原文”。就我自己的實踐經驗而言,有幾點可以分享給大家:

  1. 現在Migration的命令不是EF6之前那樣在Package Manager Console中運行了,而是在dnx命令下運行
  2. 如果dnx命令無效,那么可能是沒有執行“dnvm use”
  3. 如果之前沒有啟用Migration,最好打算開始遷移之前執行一次“dnx . ef migration add InitialCreate”來添加一個類似之前的初始遷移
  4. 如何不想通過命令來應用遷移或者說想在代碼中自動應用遷移,那么可以創建如下這樣的方法,在Startup中的Configure方法中調用
   1: public static void Init(IServiceProvider serviceProvider)
   2: {
   3:     using (var db = serviceProvider.GetService<LibraryDbContext>())
   4:     {
   5:         var sqlDb = db.Database as SqlServerDatabase;
   6:         if (sqlDb != null)
   7:         {
   8:             try
   9:             {
  10:                 sqlDb.ApplyMigrations();
  11:             }
  12:             catch (Exception ex)
  13:             {
  14:                 Trace.TraceError(ex.Message);
  15:                 throw;
  16:             }
  17:         }
  18:     }
  19: }

原文鏈接:http://www.codeproject.com/Tips/988763/Database-Migration-in-Entity-Framework


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM