日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations

發布時間:2023/12/15 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在開發數據庫應用程序的時候,經常會遇到某些表需要添加字段或者修改類型、新增表等需求,而對于EF Code First來說關注的只有實體類,當需求變更時只需要添加新的實體類或者在實體類中添加、刪除、修改屬性即可。但是修改完成之后要如何將修改同步到數據庫中?

Entity Framework提供了Migrations機制來解決這一問題。

本文要點:

●啟用Migrations

●通過Add-Migration添加Migration

●Update-Database更新數據庫

●更新模型并添加新的Migration

●啟動應用時自動將數據庫更新至最新版本

●關于Automatic Migrations(自動遷移)

啟用Migrations

在VS中的Package Manager Console窗口中選擇默認項目為DbContext存在的項目,并執行命令:

enable-migrations

然后項目中將生成Migrations目錄和Configuration類型:

構造方法:用于對一些Migrations相關的配置,如上代碼就是禁用了自動遷移。

Seed方法:根據注釋可知在遷移后執行,一般用來添加默認數據。Configuration類型可以根據需求進行修改。

注:如過出現以下錯誤,可把命名空間刪除修復:

通過Add-Migration添加Migration

如果已經存在數據庫那么需要使用–IgnoreChanges參數來創建一個空的Migration來對應當前的數據庫模型:

Add-Migration InitialCreate –IgnoreChanges

這時在Migrations目錄下會生成一個帶時間戳的InitialCreate.cs文件:

注:上面的代碼的Up和Down方法之所以為空是因為使用了–IgnoreChanges參數,因為數據庫中已經有對應的表和字段,所以不應該再創建一次,如果去掉該參數會生成以下代碼:

Update-Database更新數據庫

執行Update-Database目錄來更新數據庫:

update-database -StartUpProjectName 'My Blog' -ProjectName BlogRepository.MySQL

注:由于本例的DbContext相關類型在BlogRepository.MySQL中,但是連接字符串在My Blog項目中,所以在執行數據庫更新時需要指定啟動項目和項目名稱兩個參數。一般情況下使用update-database命令即可。

這時數據庫中多了一個名稱為__MigrationsHistory表并有一條記錄。

更新模型并添加新的Migration

1. 為模型添加一個新的屬性"IsPublish"來代表文章是否被公開:

2. 運行Add-Migration命令,名稱最好與變更相關用于區分多個Migration便于維護:

add-migration addIsPublishColumn

執行命令后會生成一個DbMigration的子類,該類型中包含一個Up和Down方法,分別對應更新時和回退時對數據庫的操作:

上面的Up方法就是為dbo.Posts表添加名為"IsPublish"的列,如果回滾這個Migration時則把該列刪除。

3. 再次使用update-database命令將新的變更同步到數據庫中:

update-database -StartUpProjectName 'My Blog' -ProjectName BlogRepository.MySQL -Verbose

注:使用參數-Verbose可以看到更多執行信息,包括執行的SQL語句。

啟動應用時自動將數據庫更新至最新

啟動應用時將數據庫更新至最新可以省略“update-database”命令執行這一過程,只需要添加了Migration,并且該Migration沒有同步到數據庫,那么在應用執行(實際上是DbContext在創建模型時OnModelCreating)將會把修改同步到數據庫。

1. 添加ClickCount屬性:

2. 在DBContext類型中添加OnModelCreating方法及代碼(注:該操作也可以通過配置文件配置):

3. 運行程序:

4. 查看結果:

關于Automatic Migrations(自動遷移)

自動遷移指的是在執行“update-database”命令時,將對比實體模型與數據庫結構,如果它們有差異則以實體模型為準,將差異同步到數據庫。相當于省略了add-migration命令。

在執行啟動遷移命令(enable-migrations )時,可以添加參數–EnableAutomaticMigrations或者在生成待Configuration類型的構造方法中將AutomaticMigrationsEnabled的值設為true。

自動更新數據庫(migrate database to latest version)與自動遷移(automatic migrations),前者省略“update-database”后者省略“add-migration”,如果一起使用則兩者都省略,開發者僅需通過enable-migrations命令開啟遷移,然后在開發中修改完成實體類,就可以調試程序,調試程序過程中自動更新數據庫結構。

小結:

本章主要是介紹EF的遷移功能,對于EF來說這是一個非常重要的功能,因為在開發過程中特別是code first開發過程中,經常會添加實體、修改實體屬性甚至會在使用Fluent API來映射數據庫關系的時候也會針對某些屬性進行修改,如字段類型、最大長度以及索引等。

對于自動更新數據庫以及自動遷移功能,個人不建議在團隊開發正式項目時使用,因為使用Add-Migration命令可以很好的追蹤數據庫結構的更新,并且可以根據情況進行回滾。而自動更新數據庫會導致數據庫結構改變,團隊工作中如果多人使用了同一個數據庫并且在代碼未同步時會導致錯誤的出現。

但啟用自動遷移并且設置數據庫初始化時自動將數據庫更新至最新將節省很多操作。各有利弊可根據情況選擇。

歡迎添加個人微信號:Like若所思。

歡迎關注我的公眾號,不僅為你推薦最新的博文,還有更多驚喜和資源在等著你!一起學習共同進步!

總結

以上是生活随笔為你收集整理的根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩欧美黄色 | 超碰麻豆 | 日本黄区免费视频观看 | 亚洲欧洲综合 | 91超碰在线免费观看 | 国产一级做a爱片久久毛片a | 处女朱莉第一次 | 亚洲综合色站 | 免费看成年人视频 | av导航在线观看 | xxx日本黄色| www.黄色免费| 日日天天干 | 中文字幕免费在线看线人 | 欧美视频二区 | 国产成人+综合亚洲+天堂 | 国产精品一区二区性色av | 1000部做爰免费视频 | 人妻互换一区二区三区四区五区 | 色综合色综合色综合 | 日韩在线一级片 | 欧美一本在线 | 欧美综合自拍 | 外国av在线 | 麻豆视频精品 | 韩日毛片 | 久久久久久久久久福利 | 一本色道综合久久欧美日韩精品 | 88av视频| av在线观 | 成人黄色小视频 | 国产人成无码视频在线观看 | 麻豆md0077饥渴少妇 | 亚洲一区二区三区电影在线观看 | 黑人多p混交群体交乱 | 精品视频一区二区三区四区 | 天天视频污 | 久久伊人精品 | 国产成人自拍一区 | 韩国三级中文字幕hd浴缸戏 | 久久网中文字幕 | 美女的隐私免费看 | 精彩毛片 | www.插插插 | 91私拍| 国产精品伦一区二区三级古装电影 | 超碰在线看 | 成人区精品一区二区婷婷 | 久久成人一区 | 超碰国产91| 神马久久久久久久久久 | 成人wwwww免费观看 | 在线视频 日韩 | 黄色免费在线观看视频 | 视频污在线观看 | 女人被男人躁得好爽免费视频 | 中文字幕在线视频免费 | 手机看片欧美日韩 | 日韩中文在线字幕 | 国产一级18片视频 | 国产高清在线免费观看 | 超碰在线观看免费版 | 中文毛片| 欧洲成人午夜精品无码区久久 | 爱上av| 中文久久乱码一区二区 | www操操操 | 青青免费在线视频 | 污污视频网站免费观看 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 嫩草综合 | 8x8ⅹ国产精品一区二区二区 | 国产成人综合av | 男生脱女生衣服 | 在线播放无码后入内射少妇 | 中国av片 | 黄色a区 | 国产精品jizz在线观看美国 | 成人免费午夜 | 国产性―交一乱―色―情人 | 日本大尺度吃奶做爰视频 | 六月激情综合网 | 久久亚洲私人国产精品va | 奇米第四色在线 | 青青草原伊人 | 无码国产精品一区二区免费式直播 | 一区二区三区在线播放 | 欧美久久久久久 | 日本欧美色图 | www插插| 成人免费看av | 美女福利视频在线 | h在线免费 | 我色综合| 日韩欧美亚洲一区二区三区 | 又粗又猛又爽又黄的视频 | 亚洲一区二区在线观看视频 | 骚虎视频在线观看 | 黄色777|