<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      EF Code First Migration總結

      開啟Migration

      1. 通過 Tools->Nuget Package Manager->Package Manager Console 打開Package Manager Console窗口

      2. Default Project選擇當前的DbContext所在的項目

      3. 通過命令開啟Migration

      Enable-Migrations

      開啟之后,DbContext對應的項目中會生成一個Migrations的文件夾, 主要用來存放各個版本自動生成的更新描述文件

      類似于下圖:

      image

      初始化庫

      通常你新建了模型,在數據庫建庫之后需要執行一次add-migration命令生成一個庫初始化的migration記錄

      add-migration 20160201003

      后面部分的名字我通常都會按照當天日期拼接當天的版本號組成,另外一種不錯的實踐是按照增加的業務名稱命名,英文名稱會相對好點.

      更新庫

      庫的更新可以分為手動更新跟自動更新, 通常Code First Migration的文章都會講這里要通過Update-Database命令來把剛才的變更更新到庫里面, 通常DEV環境可以這么做,因為是直連的, 但是我們的Staging與Production環境是不可以直連的,我們要怎么做呢?

      前面有提到可以自動更新,其意思就是說,你通過 add-migration生成了migration腳本,那當程序啟動的時候,如果發現數庫接口不一致,那這個就需要更新,這個時候如果是自動更新的狀態,那程序會自動執行(從意思上等同于update-database, 產生的效果相同,但是并未實際考證是否也是跑的update-database命令), 因此無論是dev環境還是staging, production都可以通過自動update-database來完成數據庫的更新。

      如何設置自動更新

      這里有兩步:

      1. 在migrations文件夾下有個configuration的文件, 代碼如下:

      public Configuration()
              {
                  AutomaticMigrationsEnabled = true;
                  AutomaticMigrationDataLossAllowed = false;
              }

      AutomaticMigrationsEnable = true 之后, 設置EF為自動做數據庫更新。

      2. 在Global.cs或者任何程序啟動的地方加入:

      Database.SetInitializer(new MigrateDatabaseToLatestVersion<CustomerDbContext, Configuration>());

      這句是設定當前DbContext的一個初始化配置.

      潛在的問題

      自動遷移,在某些該名稱,或者刪除字段的時候,會造成現有數據的丟失,這個需要注意,目前我也是在探索過程中,有進一步的研究成果,會在更新博文說明。

       

      【補充部分】

      初始化腳本的更新

      public partial class InitDefaultData : DbMigration
          {
              public override void Up()
              {
                  Sql(@"
      --初始化FileType原始數據
      insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10001,'客戶資料',0,GETDATE();
      insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10002,'訂單資料',0,GETDATE();
      insert into FileType (SysId,FileTypeId,FileTypeName,Status,CreationTime) select NEWID(),10003,'車輛資料',0,GETDATE();
      
      --初始化FileCategory原始數據
      insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),1,'圖片',0,GETDATE();
      insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),2,'復印件',0,GETDATE();
      insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),3,'視頻',0,GETDATE();
      insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),4,'Excel文件',0,GETDATE();
      insert into FileCategory (SysId,FileCategoryId,FileCategoryName,Status,CreationTime) select NEWID(),5,'Word文件',0,GETDATE();
      ");
              }
      
              public override void Down()
              {
                  Sql(@"truncate table FileType");
                  Sql(@"truncate table FileCategory");
              }
          }

      可以通過Sql函數來執行一些自定義的SQL腳本。

      posted @ 2016-02-01 18:43  DukeCheng  閱讀(3973)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 少妇熟女高潮流白浆| 国产美熟女乱又伦AV果冻传媒| 免费无码高H视频在线观看| www亚洲精品| 国产精品尤物乱码一区二区| 99国产精品永久免费视频| 欧美在线观看www| 国产精品日韩av一区二区| 亚洲Av综合日韩精品久久久 | 国产激情一区二区三区四区| 欧美交a欧美精品喷水| 欧美熟妇乱子伦XX视频| 中文人妻av高清一区二区| 亚洲另类丝袜综合网| 久热这里有精品视频播放| 久久被窝亚洲精品爽爽爽| 国精品无码一区二区三区在线看 | 视频一区二区三区自拍偷拍| 色猫咪av在线网址| 丁香五月婷激情综合第九色| 九九热精品视频在线免费| 手机无码人妻一区二区三区免费| 欧美老少配性行为| 久久午夜电影网| 国产在线精品中文字幕| 人人爽亚洲aⅴ人人爽av人人片 | 亚洲欧洲一区二区三区久久| 亚州中文字幕一区二区| 国产成人一区二区三区视频免费| 亚洲一区二区三区自拍偷拍| 婷婷色综合成人成人网小说 | 国产在线视频一区二区三区| 亚洲综合国产精品第一页| 不卡乱辈伦在线看中文字幕| 亚洲中文字幕无码专区| 欧美牲交a欧美牲交aⅴ图片| 国产亚洲欧美精品久久久| 国产成人亚洲精品成人区| 国产不卡av一区二区| 综合激情亚洲丁香社区| 亚洲av成人精品日韩一区|