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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

EF Code First Migrations数据库迁移

發(fā)布時(shí)間:2024/1/17 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF Code First Migrations数据库迁移 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、EF Code First創(chuàng)建數(shù)據(jù)庫(kù)

  新建控制臺(tái)應(yīng)用程序Portal,通過(guò)程序包管理器控制臺(tái)添加EntityFramework。

  在程序包管理器控制臺(tái)中執(zhí)行以下語(yǔ)句,安裝EntityFramework。

PM> Install-Package EntityFramework

  安裝成功后,界面提示如下圖:

?  在新建的Portal控制臺(tái)應(yīng)用程序中添加兩個(gè)實(shí)體類,代碼結(jié)構(gòu)如下:

  其中,類文件PortalContext.cs的代碼如下:

using System; using System.Collections.Generic; using System.Linq; using System.Text;using System.Data.Entity; using System.Data.Entity.Infrastructure;using Portal.Entities; using Portal.Mapping;namespace Portal {public class PortalContext : DbContext{static PortalContext(){Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>());}public DbSet<Province> Provinces { get; set; }public DbSet<Category> Categories { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new ProvinceMap());modelBuilder.Configurations.Add(new CategoryMap());}} }

  在靜態(tài)構(gòu)造函數(shù)中,設(shè)置了當(dāng)數(shù)據(jù)庫(kù)模型發(fā)生改變時(shí),則刪除當(dāng)前數(shù)據(jù)庫(kù),重建新的數(shù)據(jù)庫(kù)。

  代碼執(zhí)行后,生成的數(shù)據(jù)庫(kù):

?

2、EF Code First數(shù)據(jù)庫(kù)遷移

2.1、生成數(shù)據(jù)庫(kù)

  修改類文件PortalContext.cs的靜態(tài)構(gòu)造函數(shù),取消當(dāng)數(shù)據(jù)庫(kù)模型發(fā)生改變時(shí)刪除當(dāng)前數(shù)據(jù)庫(kù)重建新數(shù)據(jù)庫(kù)的設(shè)置。

static PortalContext() {Database.SetInitializer<PortalContext>(null); }

?  1>、在程序包管理器控制臺(tái),執(zhí)行語(yǔ)句:

PM> Enable-Migrations -EnableAutomaticMigrations

?

  執(zhí)行成功后,Portal控制臺(tái)應(yīng)用程序代碼結(jié)構(gòu)中,添加Migrations文件夾,并生成類文件Configuration.cs。

namespace Portal.Migrations {using System;using System.Data.Entity;using System.Data.Entity.Migrations;using System.Linq;internal sealed class Configuration : DbMigrationsConfiguration<Portal.PortalContext>{public Configuration(){AutomaticMigrationsEnabled = true;}protected override void Seed(Portal.PortalContext context){// This method will be called after migrating to the latest version.// You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. E.g.//// context.People.AddOrUpdate(// p => p.FullName,// new Person { FullName = "Andrew Peters" },// new Person { FullName = "Brice Lambson" },// new Person { FullName = "Rowan Miller" }// );// }} }

?  2>、在程序包管理器控制臺(tái),執(zhí)行語(yǔ)句:

PM> Add-Migration InitialCreate

  執(zhí)行成功后,在Migrations文件夾中新增類文件201309201556388_InitialCreate.cs

  3>、在程序包管理器控制臺(tái),執(zhí)行語(yǔ)句:

PM> Update-Database -Verbose

  執(zhí)行結(jié)果生成與上面一致的數(shù)據(jù)庫(kù)

  4>、在數(shù)據(jù)庫(kù)模型中添加City類,執(zhí)行程序包管理器控制臺(tái)語(yǔ)句,Migrations文件夾中新增類文件201309201643300_AddCity.cs。

PM> Add-Migration AddCity

  再次執(zhí)行程序包管理器控制臺(tái)語(yǔ)句

PM> Update-Database -Verbose

  Portal控制臺(tái)應(yīng)用程序的代碼結(jié)構(gòu):

  數(shù)據(jù)庫(kù)更新成功之后,在數(shù)據(jù)庫(kù)中新增表City。

2.2、版本回溯

  修改數(shù)據(jù)庫(kù)中表City,刪除其中字段ProvinceNo。在程序包管理器控制臺(tái)中執(zhí)行以下兩條語(yǔ)句:

?
PM> Add-Migration ModifyCity
PM> Update-Database -Verbose

  執(zhí)行成功之后,City表結(jié)構(gòu)修改為:

  執(zhí)行程序包管理器控制臺(tái)語(yǔ)句,進(jìn)行數(shù)據(jù)庫(kù)版本回溯。

PM> Update-Database –TargetMigration:"201309201643300_AddCity.cs"

2.3、生成數(shù)據(jù)庫(kù)版本之間的Sql腳本

  執(zhí)行程序包管理器控制臺(tái)語(yǔ)句,生成數(shù)據(jù)庫(kù)版本之間的Sql腳本。該操作僅為生成Sql語(yǔ)句,并未在數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行。

Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs"

  其中-TargetMigration在未指定的情況,默認(rèn)為遷移到最新的版本。

3、EF Code First Migrations語(yǔ)句的其他參數(shù)

1>、為指定的DbContext啟用數(shù)據(jù)庫(kù)遷移

PM> Enable-Migrations -ContextTypeName Portal.PortalContext

2>、設(shè)置是否允許自動(dòng)遷移

Enable-Migrations

生成的Configuration.cs類文件的構(gòu)造函數(shù)

public Configuration() {AutomaticMigrationsEnabled = false; }

3>、Enable-Migrations指定項(xiàng)目名稱

PM> Enable-Migrations -StartUpProjectName Portal

如果在“Package Manager Console”中選擇了默認(rèn)項(xiàng)目可以不設(shè)置“-StartUpProjectName”參數(shù);如果多次執(zhí)行此命令可以添加-Force參數(shù)。

4>、查看所執(zhí)行的Sql語(yǔ)句 -Verbose指令

Update-Database -Verbose

4、代碼下載

Portal.zip

5、參考資料

http://www.cnblogs.com/libingql/p/3330880.html

轉(zhuǎn)載于:https://www.cnblogs.com/sunzhao/p/9006444.html

總結(jié)

以上是生活随笔為你收集整理的EF Code First Migrations数据库迁移的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久这里有精品视频 | 波多野结衣 在线 | 亚洲女人天堂网 | 中文字幕网站在线观看 | 你懂的欧美 | 成人午夜激情网 | 91成人免费看片 | 久久毛片网 | 国产嫩草av | 亚洲天堂男人的天堂 | 国产嫩草影视 | 天天爱天天做天天爽 | 18在线观看免费入口 | 色就是色网站 | 小宝贝真紧h军人h | 熟妇人妻中文av无码 | 18无套直看片红桃 | 亚洲日本护士毛茸茸 | 97超视频在线观看 | 久久精品一区二 | 青春草在线视频观看 | 日本视频免费看 | 四虎午夜 | 亚洲欧美日韩国产精品 | 国产原创麻豆 | 日本午夜在线视频 | 69视频在线观看免费 | 国产a区 | 桃色91| 深夜的私人秘书 | 久久久久黄 | 激情第一页 | 国产午夜精品一区二区三区四区 | 91香蕉国产在线观看软件 | 成人在线免费高清视频 | 黄色大片视频网站 | 日韩av一区二区三区在线 | 可以在线观看的黄色 | 日日夜夜亚洲 | 女人的天堂网 | 午夜色网 | 欧美激情在线观看视频 | 亚洲av无码国产精品永久一区 | 性生活一级大片 | 偷拍亚洲 | 亚洲欧洲日本国产 | 久久激情网站 | 五月婷婷在线视频 | 国产传媒视频 | 这里只有精品在线播放 | 韩国三级在线视频 | 亚洲一二三区在线 | 日韩网站免费观看 | 好吊一区二区三区视频 | 亚洲精品福利网站 | 一级片视频免费观看 | 亚洲一二三av | 亚洲精品乱码久久久久久国产主播 | 色漫在线观看 | 91免费视频国产 | 在线a免费 | 精品免费在线 | 伊人av在线播放 | 一本一道久久 | 成人亚洲一区 | 操操操网 | 一区二区视频在线看 | 国产传媒在线 | 国产精品99久久久久久人 | 男人的天堂免费 | 亚洲欧美另类综合 | 亚洲日本成人 | 91精品日韩| 高清中文字幕 | 二区三区在线 | 久久99热这里只频精品6学生 | 黄色资源在线观看 | 亚洲一卡二卡三卡四卡 | 亚洲欧美另类在线视频 | 久久这里只有精品国产 | 五月天综合婷婷 | av成人免费在线观看 | 日本精品在线一区 | 日韩一级影院 | 一区二区三区不卡在线观看 | 久久久精品一区二区涩爱 | 久久精品毛片 | 天堂av亚洲| 久啪视频 | 狠狠操在线 | 青青草99| 国语对白精彩对话 | 国产精品第二页 | 三级免费网站 | 337p粉嫩色噜噜噜大肥臀 | 99国产精品99| 国产高清在线观看 | 超碰在线国产97 | 男人的天堂97 |