写点什么

使用 Code First Migrations 依据代码更新数据库结构

  • 2011-12-08
  • 本文字数:811 字

    阅读完需:约 3 分钟

ADO.NET 团队最近发布了 Code First Migrations Beta 1 for Entity Framework (EF)。该程序包已经在 NuGet 提供,位于 EntityFramework.Migrations 名称下。

应用程序开发领域中的代码先行(Code First)方法指的是先在代码中创建对象模型,然后按照模型生成数据库结构。这与“模型先行开发”类似,那种方式会使用 Visual Studio 中的 EF 设计器创建数据模型。(想要查看代码先行开发方式的实际效果,你可以访问 ADO.NET 团队的 EF 4.2 代码先行演练。)

Code First Migrations 这种工具可以基于代码中所做的改变,以递增的方式更新已存的数据库结构。这可以按照自动或者手动的方式进行(微软将其称之为“带有魔力的”和“没有魔力的”迁移),采用哪种方式依赖于对模型所做出的更新的类型。能够自动完成的变更类型有:

  • 增加属性或者类
  • 对属性和类重命名(想要使其正常工作,需要编写一些脚本)
  • 对列(column)或者表(table)重命名,而不对属性或类重命名
  • 删除属性

在任何一种情况下,执行命令 Update-Database 就会自动把变更应用到数据库结构上。

对于所有其它更新,Code First Migrations 会使用 Add-Migration 命令创建变更数据库的脚本。这些迁移操作都会保存,并加上时间戳,让我们可以回滚到数据库结构的上一个版本。除了能够对数据库结构做出变更之外,迁移操作中还可以包括用于操作数据的 SQL 命令。想要提交迁移操作,你只需要再次运行 Update-Database 命令。为了对数据库进行复制,Code First Migrations 也可以使用 Update-Database 来创建 SQL 脚本:

Update-Database –TargetDatabase:"NewDatabase" –Script

ADO.Net 团队已经提供了使用 Code First Migrations 的“没有魔力”“具有魔力的”两种方法的演练,你可以从中获得更多信息。

微软声称,这个beta 版本只包含了Code First Migrations 的Visual Studio 实现,他们计划还要引入命令行和MSDeploy 的版本。

查看英文原文: Code First Migrations Updates Data Structure From Code

2011-12-08 01:293619
用户头像

发布了 340 篇内容, 共 144.5 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

SphereEx 潘娟:玩开源,我们就要秀出别样 My Way 来构建活力生态 | 大话开源Vol.11

OpenTEKr

大话开源

我选择了VSCode

xcbeyond

vscode 28天写作 12月日更

操作系统之进程管理、内存管理总结

yuexin_tech

内存 进程 操作性

如何在 Windows Server 上搭建 Git Repository Server?

吴脑的键客

git windows

LabVIEW图像灰度测量(基础篇—7)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像灰度测量 像素灰度

【LeetCode】将一维数组转变成二维数组Java题解

Albert

LeetCode 每日一题 1月月更

01 Prometheus之监控基础知识

穿过生命散发芬芳

Prometheus 1月月更

模块八作业-消息队列表设计

Geek_cb2b43

2021阅读总结

俞凡

阅读

APISIX 温铭:开源的本质是要撬动开发者的杠杆 | 大话开源Vol.13

OpenTEKr

大话开源

SkyWalking 吴晟:好的开源项目,要能解决真实且有共性的问题

OpenTEKr

大话开源

yuye 个人介绍

努力努力再努力

Java 中间件

从零打造WhatsApp

俞凡

架构 大厂实践 whatsapp

架构实战-模块八-作业

无名

「架构实战营」

VMware 任道远:中国的开源生态还处在萌芽发展的青春期,需要多元力量和全球化协作 I OpenTEKr 大话开源 Vol.9

OpenTEKr

大话开源

瞰见|从电厂螺蛳里看 Elastic 与亚马逊云的恩怨情仇

OpenTEKr

狄安瞰源

一个cpp协程库的前世今生(六)管理器manager

SkyFire

c++ cocpp

[架构实战营]模块五

Vincent

「架构实战营」

产品规划:以终为始

石云升

产品规划 1月月更

Kyligence 韩卿:开源改变了人类生产软件的方式 | 大话开源Vol.10

OpenTEKr

大话开源

开源社林旅强:开源之于创新,有时无招胜有招

OpenTEKr

大话开源

盘点 2021|鲜花怒马少年时,一日看尽长安花

AXYZdong

盘点 2021

盘点2021 | 本命年的自我救赎之路

打工人!

盘点 2021 1月月更

Wechaty 李卓桓:我想要某种功能,你没有?那我来一个

OpenTEKr

开源 大话开源

模块八作业:设计消息队列存储消息数据的 MySQL 表格

dean

架构实战营

瞰见 | 美股新贵Confluent背后的卡夫卡,不是那个魔幻小说家

OpenTEKr

狄安瞰源

TAOS Data 陶建辉:一个开源项目要成功,最关键的是定位 | 大话开源Vol.12

OpenTEKr

大话开源

架构实战营 - 模块四

Geek_e6f7f6

架构训练营

一个cpp协程库的前世今生(七)ctx的状态与标识位

SkyFire

c++ cocpp

IntelliJ IDEA激活码

Geek甜甜

链游平台 Gacube Finance 登陆虎符Hoo Labs空投

区块链前沿News

Hoo 虎符交易所 GaCubeFinance

使用Code First Migrations依据代码更新数据库结构_.NET_Jenni Konrad_InfoQ精选文章