(此文章同时发表在本人微信公众号“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

在Entity Framework 7中进行数据迁移的更多相关文章

  1. Entity Framework Core中的数据迁移命令

    使用程序包管理控制台输入命令. 数据迁移命令: Add-Migration  对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的. Remove-Migration 删除上次的迁移 Sc ...

  2. 20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 ...

  3. 深入了解Entity Framework框架及访问数据的几种方式

    一.前言 1.Entity Framework概要 Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案.该框架曾经为.NET Fra ...

  4. 浅析Entity Framework Core中的并发处理

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处 ...

  5. 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?

    做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...

  6. laravel中的数据迁移和数据填充

    laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students ...

  7. Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(一)

    1. 案例1 - 类型和表之间的EF代码优先映射 从EF6.1开始,有一种更简单的方法可以做到这一点.有关 详细信息,请参阅我的新EF6.1类型和表格之间的映射. 直接贴代码了 从EF6.1开始,有一 ...

  8. .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法

    本人刚学.net core,因此在学习过程中会遇上许许多多的坑.每一位初学者最大的问题在于资料的查看不仔细或是没有正确理解里面的内容,导致在后面自己在不知道错误的情况下做了一个小动作.对于完全没有理解 ...

  9. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio »迁移

    Migrations¶ 4 of 4 people found this helpful The Contoso University sample web application demonstra ...

随机推荐

  1. [转载] C++ 突破私有成员访问限制

    最后一个方式 模板尚未弄清楚. 我们在写代码的时候,按约定都是把成员数据放到private访问区中,然后在通过相应的函数来存取.那又有什么样的代码可以突破访问权限来直接操作类中private区段中的成 ...

  2. unity3d项目文件目录发布后,对应的ios/android应用目录[转]

    Unity3d的Resource.AssetBundle与手游动态更新的报告,在这里分享一下,希望能够对各位用Unity的朋友有些许帮助.目录:1.Unity的资源数据加载2.Resource.Str ...

  3. backup daily

    #!/bin/bash # #This is a test in book.thanks for Richard Blum. #Please put this file to crontab,than ...

  4. Vue 为什么在 HTML 中监听事件?

    为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...

  5. Silverlight 动画性能

    通过几个配置可以提高动画性能: Desired Frame Rate 在WEB项目中配置: <div id="silverlightControlHost"> < ...

  6. Asp.Net之自定义表达式构造器(ExpressionBuilder)

    在Asp.Net的Page页面中我们经常会使用到资源文件.读取资源文件的方式为:<%$Resources:Resource1,Test1%>,这样就可以显示Resource1这个资源文件中 ...

  7. WP开发资源

    wp开发:连续两次点击返回键退出程序的设计: http://hi.baidu.com/youngytj/item/6be317719cc371306cc37ce4 X http://www.cnblo ...

  8. xmpp的bug

    [微分享]:事前必三思,事中要坚韧,事后莫悔恨,只有眼光看远些,脚步坚实些,人生方多些圆满,少些遗憾. xmpp的bug

  9. supersr--图形上下文的注意点

    - (void)test { // 不要自己调用drawRect:方法的原因: // 当系统调用drawRect:方法之前, 会创建一个与当前UIView的layer相关的图形上下文, 这样就可以保证 ...

  10. 【转】深入Windows内核——C++中的消息机制

    上节讲了消息的相关概念,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果 图1.效果图  Win32 ...