ASP.NET的EFCore遷移怎么實(shí)現(xiàn)

這篇文章主要介紹“ASP.NET的EF Core遷移怎么實(shí)現(xiàn)”,在日常操作中,相信很多人在ASP.NET的EF Core遷移怎么實(shí)現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ASP.NET的EF Core遷移怎么實(shí)現(xiàn)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司專注于阿拉爾企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。阿拉爾網(wǎng)站建設(shè)公司,為阿拉爾等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

當(dāng)你開發(fā)一個(gè)新的應(yīng)用程序的時(shí)候,你的模型頻繁的變化,而每一次的數(shù)據(jù)模型的改變,將使它與數(shù)據(jù)庫不同步。你通過配置EF Core,使得數(shù)據(jù)庫不存在時(shí)創(chuàng)建數(shù)據(jù)庫。每一次改變數(shù)據(jù)模型(增刪改 實(shí)體類或者改變DbContextClass),可以刪除數(shù)據(jù)庫然后重新創(chuàng)建一個(gè)與數(shù)據(jù)模型相匹配的數(shù)據(jù)庫,然后填充測(cè)試數(shù)據(jù)。

這種保持?jǐn)?shù)據(jù)模型與數(shù)據(jù)庫同步的方法能夠工作得很好,然后卻不適用于將應(yīng)用程序發(fā)布到產(chǎn)品中的階段。當(dāng)應(yīng)用程序在真實(shí)的產(chǎn)品的時(shí)候,通常產(chǎn)品中包含有你需要保留的數(shù)據(jù),在模型改變的時(shí)候(比如增加一個(gè)新列),你不希望丟失任何數(shù)據(jù)。EF Core 遷移功能能夠解決這個(gè)問題,它能使EF更新數(shù)據(jù)庫的結(jié)構(gòu)而不用重新創(chuàng)建一個(gè)新的數(shù)據(jù)庫。

為了能夠使用遷移,你可以使用 Package Manager Console(PMC)或者command-line interface(CLI 命令行)。

用于CLI的EF工具 是在 Microsoft.EnrityFrameworkCore.Tools工具包中提供,對(duì)于 vs 15.7的版本,已經(jīng)默認(rèn)添加到了MVC模板中的 Microsoft.AspNetCore.App 包中。不用像官方教程介紹的,需要手工添加。

 <PackageReference Include="Microsoft.AspNetCore.App" />

更改連接字符串

更改appsettings.josn文件中數(shù)據(jù)庫連接字符串中的數(shù)據(jù)庫名稱為以前未使用的過名稱。這樣的改變使項(xiàng)目能使用 first migration 創(chuàng)建一個(gè)新的數(shù)據(jù)庫。這并不是一個(gè)開始使用遷移必需的操作,但你會(huì)看到這是一個(gè)好主意。

另外一個(gè)方法是從SSOX(SQL Server Object Exporer SQL對(duì)象資源管理器)或CLI中刪除數(shù)據(jù)庫。

刪除數(shù)據(jù)庫的CLI命令是:dotnet ef database drop

創(chuàng)建初始化遷移
在解決方案管理器中,右鍵 項(xiàng)目文件夾----在彈出的菜單中選擇 在文件資源管理器 中打開--------在地址欄輸入cmd.

在控制臺(tái)窗口中輸入:dotnet ef migrations add InitialCreate 

EF產(chǎn)生的代碼會(huì)從頭開始創(chuàng)建數(shù)據(jù)庫。

會(huì)在解決方案管理器中 建立一個(gè)Migrations 文件夾,在其中,有一個(gè)同名加時(shí)間戳的cs文件。Up方法創(chuàng)建與數(shù)據(jù)模型實(shí)體集對(duì)應(yīng)的數(shù)據(jù)庫表格,down方法刪除它們。

如果你創(chuàng)建初始化遷移的時(shí)候,數(shù)據(jù)庫已經(jīng)存在。創(chuàng)建數(shù)據(jù)庫的代碼依然會(huì)生成但是它不會(huì)運(yùn)行,因?yàn)閿?shù)據(jù)庫已經(jīng)與數(shù)據(jù)模型相匹配。當(dāng)你發(fā)布一個(gè)應(yīng)用到另外一個(gè)環(huán)境的時(shí)候,數(shù)據(jù)庫不存在,此代碼將會(huì)創(chuàng)建數(shù)據(jù)庫,所以,這是一個(gè)好的主意先來測(cè)試它。

數(shù)據(jù)模型快照(Data Model snashot)

 遷移創(chuàng)建了現(xiàn)有數(shù)據(jù)庫結(jié)構(gòu)的快照。當(dāng)你增加一個(gè)遷移,通過對(duì)比數(shù)據(jù)模型和快照文件,決定改變了什么。

刪除遷移的控制臺(tái)命令是 dotnet ef migrations remove ,會(huì)刪除遷移和保證快照 被正確的重置。

應(yīng)用遷移到數(shù)據(jù)庫

應(yīng)用遷移更新數(shù)據(jù)庫的CLI:dotnet ef database update

數(shù)據(jù)庫中的EFMigrationsHistory表 會(huì)跟蹤哪些遷移被應(yīng)用到數(shù)據(jù)庫。

到此,關(guān)于“ASP.NET的EF Core遷移怎么實(shí)現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)頁名稱:ASP.NET的EFCore遷移怎么實(shí)現(xiàn)
文章位置:http://muchs.cn/article48/ihsgep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站排名、服務(wù)器托管、關(guān)鍵詞優(yōu)化、做網(wǎng)站、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名