• MVC5+EF6+MYSQl,使用codeFirst的数据迁移


            之前本人在用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

                                                     如果觉得有用,顺手点个推荐
  • 相关阅读:
    select,epoll,poll比较(网络资源总结)
    c++(重载、覆盖、隐藏)
    TCP状态转换图
    TCP心跳 | TCP keepAlive
    回车、换行、空格的ASCII码值—(附ASCII码表)
    C++ dlopen mini HOWTO 一篇非常好的介绍
    shell十三问
    linux IPC消息队列 的内核限制
    C++ string 类常用函数
    const用法的解惑
  • 原文地址:https://www.cnblogs.com/seesharply/p/4809678.html
Copyright © 2020-2023  润新知