首页 / ASP.NET / ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)
ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2681字,纯文字阅读大概需要4分钟。
内容图文
背景
code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成。
要求
- 已安装NuGet
过程示例
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; namespace MvcApplication1.Models { public class Movie { public int ID { get; set; } publicstring Title { get; set; } public DateTime ReleaseDate { get; set; } publicstring Genre { get; set; } publicdecimal Price { get; set; } publicstring Rating { get; set; } } publicclass MovieDBContext : DbContext { public DbSet<Movie> Movies { get; set; } } }
//新model
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; namespace MvcApplication1.Models { public class Movie { public int ID { get; set; } publicstring Title { get; set; } public DateTime ReleaseDate { get; set; } publicstring Genre { get; set; } publicdecimal Price { get; set; } publicdecimal VipPrice { get; set; } publicstring Rating { get; set; } } publicclass MovieDBContext : DbContext { public DbSet<Movie> Movies { get; set; } } }
注:区别在于,我们给Movie新加了一个VipPrice属性。
接下来,我们将开始持久化此model至数据库中(我们现在只是对属性作修改,此时数据库中此字段的长度为nvarchar(max),并不是nvarchar(10))
1:在config中配置数据库连接:
< connectionStrings > < add name ="MovieDBContext" connectionString ="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName ="System.Data.SqlClient" /> </ connectionStrings >
2:打开NuGet控制台:
3:运行命令Enable-Migrations
可能会出现如下错误:
PM> Enable-Migrations More than one context type was found in the assembly ‘MvcApplication1‘. To enable migrations for MvcApplication1.Models.UsersContext, use Enable-Migrations -ContextTypeName MvcApplication1.Models.UsersContext. To enable migrations for MvcApplication1.Models.MovieDBContext, use Enable-Migrations -ContextTypeName MvcApplication1.Models.MovieDBContext. To enable migrations for MvcApplication1.PurchaseRequestEntities, use Enable-Migrations -ContextTypeName MvcApplication1.PurchaseRequestEntities.
这是因为我之前 执行过 Enable-Migrations ,系统提示我已经存在MvcApplication1 context
此时项目会出现如下文件夹:
打开configuation.cs,将作出如下修改:
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
4:再次执行Update-Database:
如下:
PM> Update-Database 指定“-Verbose”标记以查看应用于目标数据库的 SQL 语句。 无任何待定的基于代码的迁移。 正在应用自动迁移: 201501220847062_AutomaticMigration。 正在运行 Seed 方法。
如果确保没事,只需给此命令加个强制执行的参数即可:
Enable-Migrations -Force
最后再次执行:Update-Database
数据库中已经增加VipPrice字段
数据库中的原数据也没有丢失!
原文:http://www.cnblogs.com/178mz/p/4242230.html
内容总结
以上是互联网集市为您收集整理的ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)全部内容,希望文章能够帮你解决ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。