在刚开始学习EntityFramework的过程中,虽然成功的使用CodeFirst在指定的数据库中生成了数据表,但是后来因为需要,修改原来的实体模型的结构,导致每次运行程序都报出这样的错误:”支持“XXX”上下文的模型已在数据库创建后发生更改,请考虑使用Code First迁移更新数据库……“,于是开始研究CodeFirst迁移的问题,解决这个问题的方式就是使用CodeFirst Migrations——数据迁移工具。这个工具能够帮我们很好的解决实体模型与数据表不同步的问题。
上一篇文章介绍了使用EntityFramework的CodeFirst来生成数据表的方法,这在很大程度给我们的开发提供了便利。但是虽然我们能够用这样的方法来创建我们项目的数据表,但随着我们项目越做越大,之前编写的数据实体模型的结构也可能会发生变化,这就造成了数据表结构和实体模型结构不一致的问题。于是,每次我们运行程序的时候都会报出这样的错误:”支持“XXX”上下文的模型已在数据库创建后发生更改,请考虑使用Code First迁移更新数据库……”
那么如何解决这个问题呢?很显然错误说明中已经给出了答案——使用CodeFirst迁移更新数据库。所以接下来我们来研究一下如何使用CodeFirst Migrations迁移数据库。
>准备工作
1、首先,在Model文件夹下新建一个ProductModel实体,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace EntityFrameworkMVC.Models
{
public class ProductContext : D