本文接续自《Code-First 在SQLServer Compact 4.0 中的应用(一),基础配置》,解决数据库架构需要变更时遇到的问题。
回顾例子中的代码(改用MVC描述):
? public class liangyichenDBContext : DbContext { public DbSet<liangyichenDB> Items { get ; set ; } } public class liangyichenDB { [Key] public int index { get ; set ; } public string Title { get ; set ; } public DateTime pubdate { get ; set ; } } |
?
public ActionResult Index() { var context = new liangyichenDBContext(); context.Items.Add( new liangyichenDB { Title = "1" ,pubdate = DateTime.Now }); context.Items.Add( new liangyichenDB { Title = "2" ,pubdate = DateTime.Now }); context.Items.Add( new liangyichenDB { Title = "3" ,pubdate = DateTime.Now }); context.SaveChanges(); return VIEw(context.Items); } |
?
@model Iqueryable< codefirst_Migrations.Models.liangyichenDB > @{ Layout = null; }<!DOCTYPE HTML> < HTML > < head > < Meta name = "vIEwport" content = "wIDth=device-wIDth" /> < Title >Index</ Title > </ head > < body > < div > @foreach (var i in Model) { < p >@i.Title :@i.pubdate</ p > } </ div > </ body > </ HTML > |
上例在 Visual Studio 2012 中调试通过。
首先我们一定要运行一次,确保生成了原始数据库(/app_data/Database.sdf)
下面我们开始更改数据库架构:
? public class liangyichenDB { [Key] public int index { get ; set ; } public string Title { get ; set ; } public DateTime pubdate { get ; set ; } //增加一个字段 public string notes { get ; set ; } } |
再运行:
现在开始解决问题啦:
在”工具“--”库程序包管理器“--”程序包管理器控制台“中, 依次键入并回车:
1:Enable-Migrations
2:Add-Migration UpdataDatabasesWithAddNotes
3:Update-Database
步骤1,开启架构更新;步骤2,添加一个更新;步骤3,把新的架构刷新回数据库,进行实际修改。其中步骤2中的”UpdataDatabasesWithAddNotes“是我们自己定义的名称,能够表达意思即可。
这时候我们再刷新看看数据库的实际架构:
查看一下数据:
我们对Controller和VIEw中的代码作一下修改,验证在程序中的执行结果:
? public ActionResult Index() { var context = new liangyichenDBContext(); context.Items.Add( new liangyichenDB { Title = "4" ,pubdate = DateTime.Now,notes = "新字段值-1" }); context.Items.Add( new liangyichenDB { Title = "5" ,notes = "新字段值-2" }); context.Items.Add( new liangyichenDB { Title = "6" ,notes = "新字段值-3" }); context.SaveChanges(); return VIEw(context.Items); } |
?
< div > @foreach (var i in Model) { < p >@i.Title :@i.pubdate : @i.notes</ p > } </ div > |
@H_301_809@
至此,对于数据库架构的修改,基本 *** 作已经完成。 下面我们来回顾它的过程:
当我们第一次键入Enable-Migrations的时候,系统自动为项目中生成了文件夹Migrations:
Migrations文件夹中的代码集记录了每次更新的逻辑。通常我们没有必要去对它们作修改。为了观察一下文件夹的变化,我们再修改一次数据库架构:
? public class liangyichenDB { [Key] public int index { get ; set ; } public string Title { get ; set ; } public DateTime pubdate { get ; set ; } public string notes { get ; set ; } //第二次修改架构,再增加一个字段 public string authro { get ; set ; } } |
然后:PM> Add-Migration UpdataDatabasesWithAddAuthor
看到了吧,每次架构的更新,都会有一个新的代码逻辑文件产生。
PM> Update-Database :
至此,对于在Codefirst中数据库架构更新并保留历史数据的基本 *** 作,告一段落。
总结以上是内存溢出为你收集整理的Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据全部内容,希望文章能够帮你解决Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)