EF6 Code First & Auto Migration on Appharbor
之前不小心看到EF的code first在appharbor上进行migration的时候比较麻烦,今天碰巧也要更新数据库了,顺便试试。
modify model
public class SiteInfo : Entity
{
[JsonProperty("id")]
public string UserId { get; set; }
[JsonProperty("sitename")]
public string SiteName { get; set; }
[JsonProperty("socialid")]
public string SocialId { get; set; }
[JsonProperty("des")]
public string Description { get; set; }
[JsonProperty("token")]
public string AccessToken { get; set; }
[JsonProperty("expires")]
public DateTime ExpireDate { get; set; }
[JsonProperty("refresh")]
public string RefreshToken { get; set; }
[JsonProperty("socialname")]
public string SocilaName { get; set; }
}
其中,RefreshToken和SocilaName是新加的
package manage console
主要执行以下三个命令:
Enable-Migrations(此时生成了合并的基本架构)Add-Migration(此时生成了具体变动的代码)Update-Database(此时对数据库进行了修改,可以添加–Verbose参数观察生成的sql)- 具体介绍和高级技巧见MSDN官方文档,也不对过程中生成的文件作更多介绍了
由于我的项目里有两个dbcontext,所以碰巧碰到了Enable-Migration需要添加参数的问题,一并把执行过程和出错过程复制出来给大家借鉴一下:
PM> Enable-Migrations
在程序集“SmartSnsPublisher.Web”中找到多个上下文类型。
要允许“SmartSnsPublisher.Web.Models.ApplicationDbContext”的迁移,请使用 Enable-Migrations -ContextTypeName SmartSnsPublisher.Web.Models.ApplicationDbContext。
要允许“SmartSnsPublisher.Web.Models.SiteDbContext”的迁移,请使用 Enable-Migrations -ContextTypeName SmartSnsPublisher.Web.Models.SiteDbContext。 PM> Enable-Migrations -ContextTypeName SmartSnsPublisher.Web.Models.SiteDbContext
正在检查上下文的目标是否为现有数据库...
检测到使用数据库初始值设定项创建的数据库。已搭建与现有数据库对应的迁移“201402141543527_InitialCreate”的基架。若要改用自动迁移,请删除 Migrations 文件夹并重新运行指定了 -EnableAutomaticMigrations 参数的 Enable-Migrations。
已为项目 SmartSnsPublisher.Web 启用 Code First 迁移。 PM> Add-Migration AddSocialNameAndRefreshToken
正在为迁移“AddSocialNameAndRefreshToken”搭建基架。
此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration AddSocialNameAndRefreshToken”重新搭建基架。 PM> Update-Database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。
正在应用显式迁移: [201402181429554_AddSocialNameAndRefreshToken]。
正在应用显式迁移: 201402181429554_AddSocialNameAndRefreshToken。
正在运行 Seed 方法。
到此为止,检查数据库,新加的两列已经建好了。
这个时候提交代码,appharbor顺利编译通过,访问网站时如愿出现了这个错误:
The model backing the 'SiteDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
也就是说,自动迁移并没有执行,我们需要手动编写代码,找到你的dbcontext类,添加overide如下方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<SiteDbContext, Migrations.Configuration>());
base.OnModelCreating(modelBuilder);
}
其中,Configuration类就是Enable-Migration的时候生成的,请自行找到正确的命名空间。再次提交代码,发现数据库已经成功更改了。

所以,至少在EF6,在appharbor上执行migration已经是非常方便的事了。由于有migration history,所以合并后的代码也没有必要去删除了。

EF6 Code First & Auto Migration on Appharbor的更多相关文章
- SQLITE WITH ENTITY FRAMEWORK CODE FIRST AND MIGRATION
Last month I’ve a chance to develop an app using Sqlite and Entity Framework Code First. Before I st ...
- MVC5中EF6 Code First启动慢及间隙变慢优化的实践经验(转)
最近项目在使用EF了,mvc使用EF确实方便,因为添加功能的时候可以使用vs自动生成用ef的增.删.查.改的模板,大的提高的工作效率.但是很多人都遇到过用EF开发的程序在第一次访问的时候会比用ADO纯 ...
- 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...
- [转] 使用 MVC 5 的 EF6 Code First 入门 系列
译文:http://www.cnblogs.com/Bce-/category/573301.html 原文:http://www.asp.net/mvc/overview/getting-start ...
- 【亲测】Asp.net Mvc5 + EF6 code first 方式连接MySQL总结
本文原文地址为:https://www.cnblogs.com/summit7ca/p/5423637.html 原文测试环境为windows 8.1+Vs2013+MySql5.7.12 本人在wi ...
- MVC5使用EF6 Code First--创建EF数据模型(一)
此Web应用程序演示如何使用Entity Framework 6和Visual Studio 2015创建ASP.NET MVC 5应用程序.本教程使用“Code First ”即代码先行.有关如何在 ...
- Linux学习日记-使用EF6 Code First(四)
一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是 请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...
- Asp.net Mvc 使用EF6 code first 方式连接MySQL总结
最近由于服务器变更为Linux系统.MsSql for Linux什么时候出来到生产环境使用还是要很长时间的.于是考虑使用Mysql数据库,ORM使用EF.于是先踩下坑顺便记录一下,有需要的tx可以参 ...
- MVC5与EF6 Code First 第一个入门完整实例教程
mvc如今火的不行,我今天就来介绍一个MVC5与EF6开发的实际的入门实例,因为EF6默认是Code First的,所以我今天也就用EF6 的Code First来做一个简单的实例,为了让实例显得简单 ...
随机推荐
- CAD技巧之001——如何将单个字合并起来
CAD技巧之001——如何将单个字合并起来 很多同志如果遇到奇葩的单个文字合并,怎么办,重新书写?复制粘贴?如果工作量很大,怎么办呢. 今天九天就教您一个好方法! 废话不多说,上动画片
- Mac OS X上搭建Apache、PHP、MySQL的Web服务器
mac OS 系统太帅了,安装php的环境如此简单,大赞一个! 转载自http://jingyan.baidu.com/article/39810a23e1939fb636fda6a9.html 在M ...
- 【Unity笔记】UGUI的Text文本框的大小随着文本字数变化
需求:UGUI的Text文本框的内容会随着文本字数多少/换行而自动改变大小. 给Text加一个Content Size Filter组件(脚本),设置Horizontal Fit和Vertical F ...
- Python 实现多元线性回归预测
一.二元输入特征线性回归 测试数据为:ex1data2.txt ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ...
- 开源网站访问统计系统Piwik
http://www.piwik.cn/ http://www.piwik.org/ Piwik 是一套基于 Php+MySQL 技术构建,能够与 Google Analytics 相媲美的开源网站访 ...
- 编译安装Mysql与管理(十四)
[教程主题]:编译安装Mysql与管理 [课程录制]: 创E [主要内容] [1]什么是Mysql MyQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被 ...
- Spring Boot Gradle 打包可执行Jar文件!
使用Gradle构建项目,继承了Ant的灵活和Maven的生命周期管理,不再使用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁. 构建环境: jdk1.6以上,此处使用1.8 Gradle ...
- React Native布局
一款好的APP离不了一个漂亮的布局,本文章将向大家分享React Native中的布局方式FlexBox. 在React Native中布局采用的是FleBox(弹性框)进行布局. FlexBox提供 ...
- R中ifelse、which、%in%的用法
R中ifelse.which.%in%的用法 (2014-02-08 13:54:08)标签: 教育 在R学习过程中,遇到了ifelse.which.%in%,下面分别举例,说明他们的用法.1.ife ...
- 25个顶级的jQuery表格插件
jQuery 表格插件可以让你创建各种各样的表格布局,表格布局是报纸和杂志中最常见的布局,现在的网站中也很常见,在这篇文章中,我向大家推荐25个jQuery 的表格插件,你可以任意控制表格的行和列,用 ...