zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/redmoon/p/4579335.html
Copyright © 2011-2022 走看看