日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

EF Code First Migrations数据库迁移

發布時間:2024/1/17 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF Code First Migrations数据库迁移 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、EF Code First創建數據庫

  新建控制臺應用程序Portal,通過程序包管理器控制臺添加EntityFramework。

  在程序包管理器控制臺中執行以下語句,安裝EntityFramework。

PM> Install-Package EntityFramework

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

?  在新建的Portal控制臺應用程序中添加兩個實體類,代碼結構如下:

  其中,類文件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());}} }

  在靜態構造函數中,設置了當數據庫模型發生改變時,則刪除當前數據庫,重建新的數據庫。

  代碼執行后,生成的數據庫:

?

2、EF Code First數據庫遷移

2.1、生成數據庫

  修改類文件PortalContext.cs的靜態構造函數,取消當數據庫模型發生改變時刪除當前數據庫重建新數據庫的設置。

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

?  1>、在程序包管理器控制臺,執行語句:

PM> Enable-Migrations -EnableAutomaticMigrations

?

  執行成功后,Portal控制臺應用程序代碼結構中,添加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>、在程序包管理器控制臺,執行語句:

PM> Add-Migration InitialCreate

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

  3>、在程序包管理器控制臺,執行語句:

PM> Update-Database -Verbose

  執行結果生成與上面一致的數據庫

  4>、在數據庫模型中添加City類,執行程序包管理器控制臺語句,Migrations文件夾中新增類文件201309201643300_AddCity.cs。

PM> Add-Migration AddCity

  再次執行程序包管理器控制臺語句

PM> Update-Database -Verbose

  Portal控制臺應用程序的代碼結構:

  數據庫更新成功之后,在數據庫中新增表City。

2.2、版本回溯

  修改數據庫中表City,刪除其中字段ProvinceNo。在程序包管理器控制臺中執行以下兩條語句:

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

  執行成功之后,City表結構修改為:

  執行程序包管理器控制臺語句,進行數據庫版本回溯。

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

2.3、生成數據庫版本之間的Sql腳本

  執行程序包管理器控制臺語句,生成數據庫版本之間的Sql腳本。該操作僅為生成Sql語句,并未在數據庫中進行執行。

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

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

3、EF Code First Migrations語句的其他參數

1>、為指定的DbContext啟用數據庫遷移

PM> Enable-Migrations -ContextTypeName Portal.PortalContext

2>、設置是否允許自動遷移

Enable-Migrations

生成的Configuration.cs類文件的構造函數

public Configuration() {AutomaticMigrationsEnabled = false; }

3>、Enable-Migrations指定項目名稱

PM> Enable-Migrations -StartUpProjectName Portal

如果在“Package Manager Console”中選擇了默認項目可以不設置“-StartUpProjectName”參數;如果多次執行此命令可以添加-Force參數。

4>、查看所執行的Sql語句 -Verbose指令

Update-Database -Verbose

4、代碼下載

Portal.zip

5、參考資料

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

轉載于:https://www.cnblogs.com/sunzhao/p/9006444.html

總結

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

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