700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > EF Code First Migrations数据库迁移

EF Code First Migrations数据库迁移

时间:2018-12-20 12:39:38

相关推荐

EF Code First Migrations数据库迁移

数据库|mysql教程

Code,First,Migrations,数据库,迁移,C

数据库-mysql教程

电脑锁屏程序源码,开机进不了ubuntu,tomcat占用两g内存,海外ip 爬虫,php grpc客户端,车上seolzw

1、EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework。 在程序包管理器控制台中执行以下语句,安装EntityFramework。 PM Install-Package EntityFramework 安装成功后,界面提示如下图: 在新建的Portal控制台

影视app源码积分商城,Ubuntu 程序访问权限,葫芦爬虫加热垫,php中 row,seo岗位工作lzw

怎么设计ps源码,ubuntu+pro5,tomcat记录响应时间,徐州爬虫市场,开源php ide,闽清公司seo销售价格lzw

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()); } public DbSet Provinces { get; set; } public DbSet 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(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 { 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.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文件夹中新增类文件0956388_InitialCreate.cs

3>、在程序包管理器控制台,执行语句:

PM> Update-Database -Verbose

执行结果生成与上面一致的数据库

4>、在数据库模型中添加City类,执行程序包管理器控制台语句,Migrations文件夹中新增类文件0943300_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:"0943300_AddCity.cs"

2.3、生成数据库版本之间的Sql脚本

执行程序包管理器控制台语句,生成数据库版本之间的Sql脚本。该操作仅为生成Sql语句,并未在数据库中进行执行。

Update-Database -Script -SourceMigration:"0943300_AddCity.cs" -TargetMigration:"0908043_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、参考资料

/en-US/data/jj591621

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。