您的位置:首页 > 其它

CodeFirst进行数据迁移之添加字段

2013-07-30 13:42 281 查看
一、为模型更改设置 Code First 数据迁移

1、工具—>库程序包管理器—>程序包管理器控制台—>输入“Enable-Migrations” 或者

Enable-Migrations -ContextTypeName Mvc.Models.DataContext

Enable-Migrations -ContextTypeName 命名空间.上下文名称

注:如果正确的话 则显示“已为项目 xxx启用 Code First 迁移。”,

Enable-Migrations命令创建了一个Migrations文件夹和Configuration.cs文件

2、程序包管理器控制台—>输入“add-migration Initial”创建初始化迁移。

注:名称“Initial”是随意命名,即要添加的字段。用来命名创建好的迁移文件。

3、程序包管理器控制台—>输入“update-database”

4、运行程序,更新完毕。

二、进一步

问题已经解决了,我们再来深入一下这种迁移方式。

当我们增加列(增加实体字段)时,可以不必重复上面的所有操作。

1、只需要将\Migrations\Configuration.cs文件中的AutomaticMigrationsEnabled = false;改成true

2、工具—>库程序包管理器—>程序包管理器控制台—>输入“update-database”

三、当我们删除列(删除实体字段)时,同样使用上面的操作,没有成功,报会丢失数据,

所以不能简单地执行“update-database”就能完成。

1、执行命令“add-migration Initial”

2、执行命令“update database”

3、运行程序,更新完毕

四、很强大的迁移

public class ContactContext : DbContext

{

public ContactContext()

: base("name=DefaultConnection")

{

//自动创建表,如果Entity有改到就更新到表结构

Database.SetInitializer<ContactContext>(new MigrateDatabaseToLatestVersion<ContactContext, ReportingDbMigrationsConfiguration>());

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)

{

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //表名为类名,不是上面带s的名字 //移除复数表名的契约

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); //不创建EdmMetadata表 //防止黑幕交易 要不然每次都要访问 EdmMetadata这个表

}

public DbSet<City> Cities { get; set; }

public DbSet<Area> Area { get; set; }

public DbSet<Campaign> Campaign { get; set; }

}

internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration<ContactContext>

{

public ReportingDbMigrationsConfiguration()

{

AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB

AutomaticMigrationDataLossAllowed = true;

}

}

参考网址
http://www.cnblogs.com/hugh251325/archive/2013/03/21/2972431.html http://www.cnblogs.com/youring2/p/mvc-5-adding-a-new-field.html http://blog.csdn.net/zy332719794/article/details/8845405 http://www.ejutuo.com/bbs/thread-3225-1-1.html http://www.cnblogs.com/chinabc/archive/2013/01/16/2846062.html MVC中Code First编程一些小技巧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: