EF EF Code First資料遷移

2021-09-07 12:50:50 字數 4005 閱讀 1624

code-first資料遷移

首先要通過nuget將ef公升級至最新版本。

新建mvc 4專案mvcmigrationdemo

新增資料模型 person 和 department,定義如下:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.web;

5using

system.componentmodel.dataannotations;

6using

system.componentmodel.dataannotations.schema;78

namespace

mvcmigrationdemo.models914

15[required]

16 [maxlength(20

)]17

public

string personname

1819

public

virtual department departmant

2021}22

}

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.web;

5using

system.componentmodel.dataannotations;

6using

system.componentmodel.dataannotations.schema;78

namespace

mvcmigrationdemo.models914

15[required]

16 [maxlength(200

)]17

public

string deptname

1819

public icollectionpersons 20}

21}

新增控制器 personcontroller

1

using

system.data.entity;23

namespace

mvcmigrationdemo.models419

20public dbsetpeople

21public dbsetdepartments 22}

23 }

除錯,**輸入http://localhost:7139/person 

登陸(localdb)\v11.0,資料庫如下圖:

出現新建表[dbo].[departments]和[dbo].[people],以及系統表[dbo].[__migrationhistory]。

其中[dbo].[__migrationhistory]用來追蹤每次資料模型異動資訊,如下圖

migrationid記錄版本,model記錄這次建立時的資料模型,productversion代表當前ef版本。

啟動資料遷移

開啟程式包管理器控制台,輸入enable-migrations指令,以mvcmigrationdemocontext為例,輸入如下:

enable-migrations -contexttypename mvcmigrationdemo.models.mvcmigrationdemocontext 

執行結果如下:

檢視解決方案資源管理器,如圖

vs 會建立乙個migrations目錄,包含兩個文件201507070650021_initialcreate和configuration。

會發現201507070650021_initialcreate剛好和[dbo].[__migrationhistory].migrationid一致,文件記錄了建立本次資料模型的完整描述。

configuration定義了資料庫遷移該有的行為。

執行資料庫遷移

修改department資料模型如下:新增about欄位

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.web;

5using

system.componentmodel.dataannotations;

6using

system.componentmodel.dataannotations.schema;78

namespace

mvcmigrationdemo.models914

15[required]

16 [maxlength(200

)]17

public

string deptname

1819 [maxlength(4000

)]20

public

string about

2122

public icollectionpersons 23}

24 }

檢視專案migration目錄,會發現新增文件:201507070718108_addabout

此時還沒有對資料庫做任何遷移動作,可檢視資料表department,無任何修改如圖

手動新增測試資料如下圖

進行遷移動作 在pm中輸入update-database指令,本次操作如下:

更新資料庫成功後,檢視資料庫。如下圖。

到此,資料遷移完成。

附1:可通過update-database指令自動生成資料庫遷移的t-sql指令碼,本次操作如下:update-database -sourcemigration 201507070650021_initialcreate -targetmigration 201507070718108_addabout -script

附2:還原資料庫  本次操作如下:update-database -targetmigration 201507070650021_initialcreate

檢視此時的資料庫,發現資料庫已還原:

EF EF Code First資料遷移

code first資料遷移 首先要通過nuget將ef公升級至最新版本。新建mvc 4專案mvcmigrationdemo 新增資料模型 person 和 department,定義如下 1 using system 2using system.collections.generic 3using...

資料探勘 資料

對關注的屬性,樣本與原始資料集有相同的性質,則用抽樣計算的結果與全集是一樣。1.1 抽樣的方法 1 簡單隨機抽樣 random sampling 放回 不放回 2 分層抽樣 stratified sampling 如果資料集不同型別的資料數量差異過大,則隨機抽樣會丟失數量少的樣本。可針對不同資料組,...

大資料資料

作業系統 核心 分配和管理硬體 庫 沒有入口的應用軟體 應用軟體 1 設定網絡卡為nat模式 2 確保windows下的服務是否啟動 dhcp,net服務 3 編輯檔案 vi etc sysconfig network scripts ifcfg eth0 4 onboot yes 5 設定ip s...