• 一步一步学EF系列三【数据迁移】


    我们每篇的内容都不多,所以希望在学习的过程中最后能亲自敲一下代码 这样更有利于掌握。


    我们现在接着上篇的例子,我们现在给随便的表增加一个字段 CreateTime 创建日期 运行一下 看看会怎么样

    修改实体类,代码给大家分享一下

    public partial class Post
        {
            /// <summary>
            /// 随笔的主键id
            /// </summary>
            public int PostId { get; set; }
            //  随笔的标题
            public string PostTitle { get; set; }
            /// <summary>
            /// 操作人
            /// </summary>
            public int BlogUserId { get; set; }
    
            /// <summary>
            /// 创建日期
            /// </summary>
           
    public DateTime CreateTime { get; set
    ; }
            /// <summary>
            /// 延迟加载博客用户
            /// </summary>
            public virtual BlogUser BlogUser { get; set; }
        }

     运行一下:

    截图

    你会看到如上的这个错误。这章本来应该作为第2篇,因为如果你亲自试过了的话,当你修改实体的属性关系,也会同样报这个错

    如果你也出现了这个错误,恭喜你 ,你正在进步!

    看字面的意思 你也能明白,他让我们使用Migrations进行数据库更新迁移。

    那具体怎么操作呢,那我们就直接开始了!!!

    启用自动迁移

    一、在 Package Manager Console 下运行命令 Enable-Migrations,完成之后你就会看到如下:

             生成了两个类:

             截图

             这两个类干什么的呢?暂时先不解释 后面的话会在讲解的。这里我分享一个关于迁移的博文有兴趣可以看一下

             没兴趣的继续往下看!!

     二、EF6 本身已经集成了Migrations 那我们主要演示的是手动去完成迁移的工作,实现在应用程序启动时自动升级

    1) 我没有采用上面的方式,我是直接新建了一个Configuration类

    image

    2)我们直接来看代码

    public class Configuration : DbMigrationsConfiguration<BlogDbContext>
        {
            /// <summary>
            /// 初始化一个<see cref="MigrationsConfiguration"/>类型的新实例
            /// </summary>
            public Configuration()
            {
                //启用自动迁移
                AutomaticMigrationsEnabled = true;
                //获取或设置一个值表示如果在自动数据丢失是可以接受的 [慎重设置]
                AutomaticMigrationDataLossAllowed = true;
            } 
         }

    核心代码就两句,简单吧! 是不是觉得学习EF so easy! 不能用so easy因为我们这里说的都是最简单的。要想学深入还是由难度的。

     三、然后在Global.asax里面添加一下代码,代表应用程序初始化的时候把数据库更新为最新的办法

    截图

     四、运行效果

    image

    整篇文章中,需要写的代码也就不超过5行吧,所以也用了图片来替代,为了就是让学习的你能动手来试一下。

    大家也可以加入QQ群进行交流(435498053)。轻松做生意外贸软件

    作者:STONE刘先生 出处:http://www.cnblogs.com/liupeng/

    本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
    如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!

  • 相关阅读:
    windows10远程桌面慢的解决
    linux挂载windows共享盘
    ORACLE 临时表空间满了的原因解决方案
    oracle临时表空间扩容
    expdp/impdp 数据泵导入导出
    Oracle Awr报告_生成
    mysql备份与保存
    oracle lsnrctl监听器多实例配置
    RabbitMQ
    docker stop 容器时 不能将我指定的容器停掉
  • 原文地址:https://www.cnblogs.com/liupeng/p/4797149.html
Copyright © 2020-2023  润新知