本演练将提供对实体框架中 Code First 迁移的概述。您可以完成整个演练,也可以跳至自己感兴趣的主题。主题如下:
- 启用迁移
- 生成并运行迁移
- 自定义迁移
- 数据移动和自定义 SQL
- 迁移到特定版本(包括降级)
- 生成 SQL 脚本
- 在应用程序启动时自动升级(MigrateDatabaseToLatestVersion 初始值设定项)
构建一个初始模型和数据库
在我们开始使用迁移之前,需要有一个项目和一个 Code First 模型。对于本次演练任务,我们仍将使用 Blog 和 Post 规范模型。
- 创建新的 MigrationsDemo 控制台应用程序
- 将最新版本的 EntityFramework NuGet 包添加到项目
- 工具 –> 库程序包管理器 –> 程序包管理器控制台
- 运行 Install-Package EntityFramework 命令
- 添加一个包含下面所示代码的 Model.cs 文件。这段代码定义一个 Blog 类,该类由我们的域模型和一个作为 EF Code First 上下文的 BlogContext 类组成。
using System.Data.Entity;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.Infrastructure;
namespace MigrationsDemo
{
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
}
}
- 现在我们已经有了一个模型,该使用它来执行数据访问了。用下面所示代码更新 Program.cs 文件。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MigrationsDemo
{
class Program
{
static void Main(string[] args)
{
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(