加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Code-First 在SQLServer Compact 4.0 中的应用(二),使用Migra

发布时间:2020-12-12 14:12:55 所属栏目:MsSql教程 来源:网络整理
导读:本文接续自《Code-First 在SQLServer Compact 4.0 中的应用(一),基础配置》,解决数据库架构需要变更时遇到的问题。 回顾例子中的代码(改用MVC描述): ? public class LiangyichenDBContext : DbContext { ???? public DbSetLiangyichenDB Items { get
public classLiangyichenDBContext : DbContext{????publicDbSet<LiangyichenDB> Items { get; set; }} ? public classLiangyichenDB{????[Key]????publicintindex { get; set; } ? ????publicstringtitle { get; set; } ? ????publicDateTime pubdate { get; set; } ? }

?

?public ActionResult Index(){????var context = newLiangyichenDBContext(); ? ????context.Items.Add(newLiangyichenDB { title = "1",pubdate = DateTime.Now });????context.Items.Add(newLiangyichenDB { title = "2",pubdate = DateTime.Now });????context.Items.Add(newLiangyichenDB { title = "3",pubdate = DateTime.Now });????context.SaveChanges(); ? ????returnView(context.Items);}

?

?@model IQueryable<codefirst_Migrations.Models.LiangyichenDB>@{????Layout = null;}<!DOCTYPE html><html><head>????<metaname="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 classLiangyichenDB{????[Key]????publicintindex { get; set; } ? ????publicstringtitle { get; set; } ? ????publicDateTime pubdate { get; set; } ? ????//增加一个字段????publicstringnotes { get; set; } ? }

再运行:

?现在开始解决问题啦:

在”工具“--”库程序包管理器“--”程序包管理器控制台“中, 依次键入并回车:

1:Enable-Migrations

2:Add-Migration UpdataDatabasesWithAddNotes

3:Update-Database

步骤1,开启架构更新;步骤2,添加一个更新;步骤3,把新的架构刷新回数据库,进行实际修改。其中步骤2中的”UpdataDatabasesWithAddNotes“是我们自己定义的名称,能够表达意思即可。

这时候我们再刷新看看数据库的实际架构:

查看一下数据:

我们对Controller和View中的代码作一下修改,验证在程序中的执行结果:

?public ActionResult Index(){????var context = newLiangyichenDBContext(); ? ????context.Items.Add(newLiangyichenDB { title = "4",pubdate = DateTime.Now,notes = "新字段值-1"});????context.Items.Add(newLiangyichenDB { title = "5",notes = "新字段值-2"});????context.Items.Add(newLiangyichenDB { title = "6",notes = "新字段值-3"});????context.SaveChanges(); ? ????returnView(context.Items);}

?

?<div>????@foreach (var i in Model)????{ ????????<p>@i.title :@i.pubdate : @i.notes</p>????}</div>

?

至此,对于数据库架构的修改,基本操作已经完成。 下面我们来回顾它的过程:

当我们第一次键入Enable-Migrations的时候,系统自动为项目中生成了文件夹Migrations:

?Migrations文件夹中的代码集记录了每次更新的逻辑。通常我们没有必要去对它们作修改。为了观察一下文件夹的变化,我们再修改一次数据库架构:

?public classLiangyichenDB{????[Key]????publicintindex { get; set; } ? ????publicstringtitle { get; set; } ? ????publicDateTime pubdate { get; set; } ? ????publicstringnotes { get; set; } ? ????//第二次修改架构,再增加一个字段????publicstringauthro { get; set; }}

然后:PM> Add-Migration UpdataDatabasesWithAddAuthor

看到了吧,每次架构的更新,都会有一个新的代码逻辑文件产生。

PM> Update-Database :

至此,对于在Codefirst中数据库架构更新并保留历史数据的基本操作,告一段落。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

本文接续自《Code-First 在SQLServer Compact 4.0 中的应用(一),基础配置》,解决数据库架构需要变更时遇到的问题。

回顾例子中的代码(改用MVC描述):

?
    推荐文章
      热点阅读