之前本人在用MVC4+EF5+MYSQL搭建自己的博客。地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在global.asax里面加上

System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<Farm.Models.FarmContext>());//每次在模型更改的时候重建数据库

或者是、

System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseAlways<Farm.Models.FarmContext>());//每次都重建数据库

在开发初期这样是可取的,我们可以一边完善自己的模型类,然后不停更新数据库;

但是当我们进行到中期,已经产生了一些数据的时候,我们不想每次更新模型然后又要清空数据重建,这个时候,EF为我们提供了Magriation,可以在codeFirst的模式下,当模型发生更改的时候迁移数据,不得不说,EF和微软自家的SQlServer配合的相当默契,这里就不再赘述,这里给一个连接就好:http://www.cnblogs.com/libingql/p/3330880.html

但是EF和MYSQL就没那么好过了,再EF5下本人也是吃了不少苦,然后还是没弄出来,这里贴出个可能的解决方案连接:http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

如果你点开了以上的连接,你会发现EF5下面配置MYSQl的更新其实是比较麻烦,而且很容易出错,至少我是这样,哭晕在厕所;偶然间想到不是有EF6么,于是在EF6中尝试了下,发现十分简单;只用按照以下步骤,轻松搞定:

我们先建好项目,写好模型,仅用于测试:

public class User

{

[Key]

public int Id { get; set; }

public string Name { get; set; }

public Blog Blog { get; set; }

}

public class Blog

{

[Key]

public int Id { get; set; }

public string Name { get; set; }

public string Content { get; set; }

}

然后在Nuget上面添加EntityFrameWork,注意,如果你是MVC5的项目可以直接添加控制器,然后选择带EF的的视图,系统会帮你添加EF6,如果是MVC4,请手动到Nuget撒很添加EF6

添加完毕,然后建立控制器

 

点添加,这里会自动帮你生成一些列视图操作(不过咱们不需要,需要的儿时那个Context),然后再context类中添加以下代码

好了,再到配置文件里面添加Mysql的连接字符串,名字就是整个Context类中配置的名字,默认就是contextt类名

好了,好了,这里还需要添加Mysql的conecter,于是我们到Nuget上去添加

运行程序

我们再来查看数据库

接下来我们执行迁移:首先添加一个log类

public class Log

{

public int Id { get; set; }

public string Message { get; set; }

}

这时候如果直接运行会报错,我们需要执行迁移;

好了,在程序管理控制台中输入

Enable-Migrations -EnableAutomaticMigrations
执行成功后会帮你添加

我们再到Context类中添加

重新生成项目之后

然后添加Dbset:    public DbSet<Log> Logs { get; set; }

在到程序管理控制台输入 add-migration LogTable,我们看到程序帮我们生成了这个,

其实内容就是对表的一系列操作

最后,再倒1程序管理控制台输入 update-database,

执行后,我们来查看数据库

好了,执行成功,祝你好运(学习中,有什么好的建议欢迎留言:www.seesharply.com

MVC5+EF6+MYSQl,使用codeFirst的数据迁移的更多相关文章

  1. [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

    写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(21)——网盘操作日志

    写在前面 上篇文章介绍了一个bootstrap的分页插件,这篇将弄一个完整的例子,就以日志分页为例说明如何请求服务端然后进行分页. 系列文章 [EF]vs15+ef6+mysql code first ...

  3. [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator

    写在前面 考虑到数据量的问题,特引入bootstrap的分页插件.插件下载地址:https://github.com/lyonlai/bootstrap-paginator 系列文章 [EF]vs15 ...

  4. [实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

    写在前面 今天吃饭回来,突然有一个更好的想法,这里做一下记录. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战 ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(14)——思考

    写在前面 从上面更新编辑文件夹,就一直在思考一个问题,之前编辑文件夹名称,只是逻辑上的修改,但是保存的物理文件或者文件夹名称并没有进行修改,这样就导致一个问题,就是在文件或者文件夹修改名称后就会找不到 ...

  6. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  7. [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表

    写在前面 本篇文章将实现,其他文件类型的列表. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF ...

  8. [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表

    写在前面 本篇文章将实现应用列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘 ...

  9. CodeFirst解决数据迁移问题

    CodeFirst解决数据迁移问题 分类: 数据库 设计模式 c#2013-04-24 17:56 137人阅读 评论(0) 收藏 举报 工程用的MVC + Entity Framework,根据Co ...

  10. [实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像

    写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 系列文章 [EF]v ...

随机推荐

  1. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  2. MVC5 网站开发之九 网站设置

    网站配置一般用来保存网站的一些设置,写在配置文件中比写在数据库中要合适一下,因为配置文件本身带有缓存,随网站启动读入缓存中,速度更快,而保存在数据库中要单独为一条记录创建一个表,结构不够清晰,而且读写 ...

  3. Android学习探索之Java 8 在Android 开发中的应用

    前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...

  4. 【NLP】Python NLTK获取文本语料和词汇资源

    Python NLTK 获取文本语料和词汇资源 作者:白宁超 2016年11月7日13:15:24 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集 ...

  5. 工行ICBC_WAPB_B2C支付接口

    一. 前期准备 手机银行(WAP)B2C在线支付接口说明V1.0.0.6.doc 手机银行移动生活商户及门户网站js接口API.doc 支付组件ICBCEBankUtil.dll和infosecapi ...

  6. 用django创建一个项目

    首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左 ...

  7. 多线程条件通行工具——CountDownLatch

    CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行. CountDownLatch(int)构造方法,指定初始计数. await()等待计数减至0. await(long, ...

  8. IT运维监控解决方案介绍

    现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...

  9. JavaScript求两个数字之间所有数字的和

    这是在fcc上的中级算法中的第一题,拉出来的原因并不是因为有什么好说的,而是我刚看时以为是求两个数字的和, 很显然错了.我感觉自己的文字理解能力被严重鄙视了- -.故拉出来折腾折腾. 要求: 给你一个 ...

  10. 查看mac中磁盘空间占用情况

    今天发现磁盘空间不够了,首先要找到那些文件夹占用了磁盘空间. du命令很好使 du -c -d 1 -m | sort -n -c 显示当前文件夹总计占用空间 -d 1 层级为1,即只显示当前目录下一 ...