• 在Entity Framework 7中进行数据迁移


    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

    题记:虽然EF7重新设计了Entity Framework,不过也还是能够支持数据迁移的。

    Entity Framework 7是微软ORM框架的一次重生,变得更加轻量级。因而默认情况是没有开启数据迁移(Migration)功能的,也即创建出来的数据库默认不会包含“__MigrationHistory”表。在这种情况下,数据模型的变更,需要你手动(通过SQL脚本)去修改对应的数据库结构。当然,你还是可以启用自动的数据迁移功能的。

    Mostafa Asaduzzaman在CodeProject上分享了一篇文章,图文并茂的讲解了如何在Entity Framework 7中进行数据迁移。大致步骤如下:

    1,在project.json中引用EntityFramework.Commands包

       1: "EntityFramework.Commands": "7.0.0-beta4"

    2,在project.json中添加“ef”的命令:

       1: "commands": {
       2:        "ef":  "EntityFramework.Commands"
       3:   },

    3,变更数据模型之后,在项目文件夹中执行如下命令来添加新的迁移代码:

       1: dnx . ef migration add newBook

    4,运行迁移代码:

       1: dnx . ef migration apply

    更详细的内容,可以“阅读原文”。就我自己的实践经验而言,有几点可以分享给大家:

    1. 现在Migration的命令不是EF6之前那样在Package Manager Console中运行了,而是在dnx命令下运行
    2. 如果dnx命令无效,那么可能是没有执行“dnvm use”
    3. 如果之前没有启用Migration,最好打算开始迁移之前执行一次“dnx . ef migration add InitialCreate”来添加一个类似之前的初始迁移
    4. 如何不想通过命令来应用迁移或者说想在代码中自动应用迁移,那么可以创建如下这样的方法,在Startup中的Configure方法中调用
       1: public static void Init(IServiceProvider serviceProvider)
       2: {
       3:     using (var db = serviceProvider.GetService<LibraryDbContext>())
       4:     {
       5:         var sqlDb = db.Database as SqlServerDatabase;
       6:         if (sqlDb != null)
       7:         {
       8:             try
       9:             {
      10:                 sqlDb.ApplyMigrations();
      11:             }
      12:             catch (Exception ex)
      13:             {
      14:                 Trace.TraceError(ex.Message);
      15:                 throw;
      16:             }
      17:         }
      18:     }
      19: }

    原文链接:http://www.codeproject.com/Tips/988763/Database-Migration-in-Entity-Framework

  • 相关阅读:
    pinia简单使用及持久化
    vue3中使用elementui 菜单栏(elmenu)点击两次才高亮的bug
    python 从文件下载lib包
    Centos7安装Python3.8
    Rust如何开发eBPF应用?(一)
    使用GetSelection模仿GetEntity
    CAD错误消息
    一款好用的pdf工具软件我的ABC软件工具箱
    wget 多线程下载 mwget 工具安装
    minio
  • 原文地址:https://www.cnblogs.com/redmoon/p/4579335.html
Copyright © 2020-2023  润新知