您的位置:首页 > 其它

Entity Framework Code First (八)迁移 Migrations

2017-08-29 14:52 337 查看
创建初始模型和数据库

  在开始使用迁移(Migrations)之前,我们需要一个 Project 和一个 Code First Model, 对于本文将使用典型的 Blog 和 Post 模型

创建一个新的控制台应用程序 MigrationsDemo;

添加最新的 EntityFramework 到项目

Tools –> Library Package Manager –> Package Manager Console;

运行命令 Install-Package EntityFramework  

创建 Blog.cs 和 DbContext 的派生类 BlogContext.cs

public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
}


public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
}


  更改 Program.cs 以调用

View Code

产生幂等脚本(EF6+)

  从 EF6 开始,如果你使用 –SourceMigration $InitialDatabase, 产生的脚本将是幂等的,幂等脚本意味着无论数据库当前处于什么版本/状态,都能升级至最新版本或指定版本(指定 –TargetMigration),生成的脚本包括检查表 __MigrationsHistory 的逻辑以及只更新之前从未更新的

在应用程序启动时自动升级(MigrateDatabaseToLatestVersion初始化器)

  当你发布部署应用程序的时候,可能希望当程序启动的时候它自动更新数据库(更新应用任何未更新的迁移),你可以通过注册 MigrateDatabaseToLatestVersion 数据库初始化器来实现这一点,数据库初始化器只包含一些逻辑检查用于确保数据库被正确设置,这个逻辑检查将会在AppDomain 的 context 第一次被使用的时候执行。

  当我们创建一个初始化器的实例时,需要指定 context type(BlogContext)以及 migrations configuration (Configuration)- 这个迁移配置类是在我们启用迁移时生成的 Migrations 目录下增加的



using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MigrationsDemo.Migrations;

namespace MigrationsDemo
{
class Program
{
static void Main(string[] args)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>());

using (var db = new BlogContext())
{
db.Blogs.Add(new Blog { Name = "Another Blog " });
db.SaveChanges();

foreach (var blog in db.Blogs)
{
Console.WriteLine(blog.Name);
}
}

Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}


原文:http://msdn.microsoft.com/en-us/data/jj591621
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: