Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据
来源:互联网 发布:淘宝禁止好评返现规则 编辑:程序博客网 时间:2024/06/03 18:38
本文接续自《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"
, pubdate = DateTime.Now, notes =
"新字段值-2"
});
context.Items.Add(
new
LiangyichenDB { title =
"6"
, pubdate = DateTime.Now, notes =
"新字段值-3"
});
context.SaveChanges();
return
View(context.Items);
}
<
div
>
@foreach (var i in Model)
{
<
p
>@i.title :@i.pubdate : @i.notes</
p
>
}
</
div
>
至此,对于数据库架构的修改,基本操作已经完成。 下面我们来回顾它的过程:
当我们第一次键入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 Migrations 更新数据库遇到的问题
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构
- EF Code First Migrations数据库迁移
- EF Code First Migrations数据库迁移
- EF Code First Migrations数据库迁移
- Code First Migrations 迁移更新数据库
- SQLServer Compact 4.0 中的应用(一),基础配置
- ef-->code first-->Migrations
- ADO.NET Entity Framework 4.3 之 Code First 下自动更新数据库结构(Automatic Migrations)
- Code First Migrations更新数据库结构的具体步骤
- 用post还是用get
- SQL--数据库触发器
- [leetcode] Decode Ways (!!)
- VC案例教学之一:改造轮子1:用for代替……
- 浅谈并行编程语言 Unified Parallel C
- Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migrations更改数据库架构并保留历史数据
- 第十一章 CrateDemo核心代码
- 【D3D11游戏编程】学习笔记十六:Alpha通道(Alpha Channel)
- 关于2012年的总结,以及下一年的计划
- VC++改造轮子(二)WindowsAPI多线程编程Thread
- Jquery中LigerUi框架的GRID控件,汇总的使用实例!
- reactor和proactor模式
- vc6的窗口菜单的使用总结
- OpenSSL build for i386、armv6、armv7、armv7s