打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Code First Migrations更新数据库架构的具体步骤

【原创】Code First Migrations更新数据库结构的具体步骤

作者寒羽枫(cityhunter172)

 

我对 CodeFirst的理解,与之对应的有 ModelFirst DatabaseFirst ,三者各有千秋,依项目实际情况自行选择。

1、开发过程中先行设计数据库并依此在项目中生成 *.dbml 或是 *.edmx文件的,就是 DatabaseFirst

2、开发时先建立空的 *.edmx 文件,由此文件生成数据库的,就是ModelFirst

 

3、使用System.Data.Entity. DbContextSystem.Data.Entity. DbSet构建数据模型,没有可视化文件,只有实体类的,就是CodeFirst

 

现在重点讲解在 CodeFirst模式下,当你的实体类发生变化时,如何自动更新数据库以及遇到的各类问题。查阅相关资料,支持自动更新的变化有以下几种:

   a、增加属性或者类

   b、对属性和类重命名(想要使其正常工作,需要编写一些脚本)

   c、对列(column)或者表(table)重命名,而不对属性或类重命名

   d、删除属性

 

一、打开程序包管理器控制台

当你的实体模型与数据库架构不一致时,引发以下错误:
The model backingthe 'SchoolContext' context has changed since the database was created.Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269)
百度搜索Code First Migrations都说要执行命令Update-Database,在哪执行呢?继续找呀找,VS.NET的“程序包管理器控制台”出现了,但文章又没说在哪调出这个控制台。我也是初学者,找了半天终于知道它住哪了,“借问Console哪里有?牧童遥指视图中”。VS.NET→“视图”工具栏→其它窗口→程序包管理器控制台


二、安装EntityFramework

打开程序包管理器控制台,设置好包含实体模型的项目,执行Update-Database如果你的项目只有一层,可能不会出现下列错误。我的测试项目把实体模型放在Mvc4DAL,因此提示“未安装任何程序包。The EntityFramework package is not installed on project'Mvc4DAL'.  

1右击Mvc4DAL项目→管理NuGet程序包

 

 

2设置好程序包源

在界面中出现“未能解析此远程名称:’nuget.org’”字样,恭喜你,这步你不能跳过。点击左下方的“设置”按钮


右在设置窗口中新建一个程序包源,输入源的 URLhttp://157.56.8.150/api/v2/勾选启用,点击“确定”

  

3安装EntityFramework

选择刚刚新建的“程序包源”,在列表中找到EntityFramework,并安装

 

三、需要置好相关参数

1、设置好数据库连接字串

在项目中,找到app.config(没有则在项目根目录手动新增,这里的设置只对本项目有效,不会影响到 Web项目中的设置)。配置<connectionStrings>节点,新增<addname="MyDBConnectString"providerName="System.Data.SqlClient"connectionString="datasource=.;initial catalog=MyDB;user id=sa;password=123456"/>Mvc4DAL用的是名称MyDBConnectString的连接字串

publicclassSchoolContext : DbContext

{

publicSchoolContext() :base("MyDBConnectString")

若没有设置好连接字串,或是字串设置有误,将出现如下提示:
Anerror occurred while getting provider information from the database. This canbe caused by Entity Framework using an incorrect connection string. Check theinner exceptions for details and ensure that the connection string is correct.

  

2运行命令Enable-Migrations

出现如下提示时,你需要执行Enable-Migrations
Nomigrations configuration type was found in the assembly 'Mvc4DAL'. (In VisualStudio you can use the Enable-Migrations command from Package Manager Consoleto add a migrations configuration).

打开程序包管理器控制台”,运行命令Enable-MigrationsMvc4DAL项目中将出现Migrations文件夹与相应的文件Configuration.cs

执行Enable-Migrations时可能会因为错误而打断,此时需要再次运行加参数的命令Enable-Migrations -Force
Migrationshave already been enabled in project 'Mvc4DAL'. To overwrite the existingmigrations configuration, use the -Force parameter.

注意“Enable-Migrations”中间没有空格,“-Force”前面必须要有空格。

 

3设置AutomaticMigrationsEnabledtrue   

打开Migrations文件夹中的Configuration.csAutomaticMigrationsEnabled默认为false改为true就哦了否则将出现提示:
Unable to update database to match the current model because there arepending changes and automatic migration is disabled. Either write the pendingmodel changes to a code-based migration or enable automatic migration. SetDbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enableautomatic migration. You can use the Add-Migration command to write the pendingmodel changes to a code-based migration.

 

四、最后执行Update-Database

上述步骤都设置好了,打开程序包管理器控制台”,运行命令Update-Database,没有出错就大功成。这里要注意的是,数据库中有个名称为dbo.__MigrationHistoryTable很重要,记录的是从创建数据库开始的全部更新的记录,所以在你没有绝对把握的情况下千万别动它。

 

    

寒羽枫(cityhunter172

2012-10-11完稿 

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
EF Code First Migrations数据库迁移
ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)
MVC、Code First系列之一(Code First数据迁移)
vs2010支持framework4.5
EntityFramework 学习之二 —— EF开发模式
解决:WebAPI中的IHttpActionResult不识别的问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服