EF實體框架之CodeFirst八

2022-01-11 06:33:42 字數 3558 閱讀 8882

前面七篇基本把code first學習了一下,不過code first中會出現乙個問題,就是資料遷移的問題。

一、資料準備

還是在前面的demo上修改,這次使用province和city類。

public

class

province

public

string provincename

public

virtual icollectioncitys }}

public

class

city

public

string cityname

public

string proid

[foreignkey(

"proid

")]//

proid一對要存在

public province province

}

static

void main(string

args)

;city cityb = new city() ;

province province = new province() };

using (var db = new

efcodefirstdbcontext())

console.readkey();

}

上面的會在資料庫對映如下面的資料表

二、資料遷移

1.增加屬性

在city類中增加乙個屬性 description,在建立city物件時增加description,再次執行會報下面的錯誤。

通過下面圖的步驟開啟程式包管理器控制台.

在上面的控制台輸入下面的code,這個在預設專案上要選擇正確,會在專案上增加migrations資料夾和configuration.cs類。

}然後執行下面的code

add-migration initialcreate
然後會生成乙個201609061311422_initialcreate.cs類。

namespace

efcodefirstdataaccess.migrations

public

override

void

down()}}

執行下面的code生成與上面一致的資料庫

此時再次執行上面的c#**就不會再報錯。而且資料庫的結構也和c#的相對應了。

2.增加類

在資料庫模型中新增user類,執行程式包管理器控制台語句,migrations資料夾中新增類檔案

add-migration adduser
此時會在專案中增加201609061323573_adduser.cs類。

namespace

efcodefirstdataaccess.migrations

) .primarykey(t =>t.userid);

}public

override

void

down()}}

再次執行下面的code

此時再次執行c#專案會在資料庫中對映出乙個users表

3.刪除屬性

這次刪除user類中的age屬性。依次執行下面的兩行

add-migration modifyuser
上面的一行會生成乙個201609061334085_modifyuser.cs類。

namespace

efcodefirstdataaccess.migrations

public

override

void

down()}}

然後更新到資料庫

update-database -verbose
4.版本回溯

在專案中可能會存在版本回溯的情況,code first也有對應的解決方案。

update-database –targetmigration: adduser

update-database -verbose

如果你想回滾一切至空資料庫,可以使用命令 update-database –targetmigration: $initialdatabase,此時要在configuration.cs中設定automaticmigrationdatalossallowed = true;

5.生成資料庫版本之間的sql指令碼

執行程式包管理器控制台語句,生成資料庫版本之間的sql指令碼。該操作僅為生成sql語句,並未在資料庫中進行執行。其中-targetmigration在未指定的情況,預設為遷移到最新的版本。

update-database -script -sourcemigration:initialcreate -targetmigration:modifyuser

EF實體框架之CodeFirst一

上面瞎逼逼半天,實際上今天是想大致演示下code first的用法,做簡單的增刪改查。一 model 首先是建立了乙個控制台應用程式efcodefirstdemo,又建立了乙個存放model的類庫efcodefirstmodels,以及乙個與資料庫有關係的類庫efcodefirstdataacces...

EF 分離實體

具體步驟 新建測試專案 如圖 其中respository和model層均為類庫專案,1.在respository層新增ado.net實體資料模型,2.複製model.tt檔案到model層,這是會發生乙個錯誤不用理會它,開啟model.tt檔案,修改const string inputfile mo...

EF實體配置

ef 有 中的模型類的配置有 dataannotations fluentapi 兩種 1.dataannotations 實體類屬性上標註attribute 必填字段標註 required 字段長度 maxlength 5 用 可空字段用 int?如果欄位在資料庫有預設值,則要在屬性上標註 dat...