在Entity Framework 7中进行数据迁移

时间:2022-12-26 12:13:28

(此文章同时发表在本人微信公众号“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&period;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. &period;net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法

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

  9. Working with Data &&num;187&semi; Getting started with ASP&period;NET Core and Entity Framework Core using Visual Studio &&num;187&semi;迁移

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

随机推荐

  1. python与c互相调用

    虽然python开发效率很高,但作为脚本语言,其性能不高,所以为了兼顾开发效率和性能,通常把性能要求高的模块用c或c++来实现或者在c或c++中运行python脚本来处理逻辑,前者通常是python中 ...

  2. 添加sudo权限

    进入超级用户模式.也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式.(当然,你也可以直接用root用) 添加文件的写权限.也就是输入命令&quot ...

  3. bitmap 加载的时候出现OOM,nullpointer

    1.OOM :对图片进行压缩,效果还不错:http://182.92.150.15:9876/static/server/topic_user/8068/201506/e5b37fec-0919-11 ...

  4. JavaWeb(三)servlet

    Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点.与Java程序的区别:Servlet对象主要封装了对Http请求的处 ...

  5. Java中输入判定的错误和纠正

    在编程过程中,很多技术人员看重程序的简洁性,效率性和包容性.其中最容易问到的就是假如输入数据不符合要求时的程序处理,这也是很多公司的机试题中应聘人员写出了符合功能要求的程序却并未通过面试的原因.下面是 ...

  6. devops工具

    工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub.GitLab.BitBucket.SubVersion 构建工具:Ant.Gradle.maven 自动部署:Capistran ...

  7. 浅析 &commat;PathVariable 和 &commat;RequestParam&lpar;转发,非原创&rpar;

    首先 上两个地址:地址①http://localhost:8989/SSSP/emps?pageNo=2地址②http://localhost:8989/SSSP/emp/7如果想获取地址①中的 pa ...

  8. Django 拾遗

    1.python_2_unicode_compatible装饰器 from django.db import models from django.utils.encoding import pyth ...

  9. Libre 6009 「网络流 24 题」软件补丁 &sol; Luogu 2761 软件安装问题 (最短路径,位运算)

    Libre 6009 「网络流 24 题」软件补丁 / Luogu 2761 软件安装问题 (最短路径,位运算) Description T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放 ...

  10. &lpar;转载&rpar;Spring 注解&commat;Component&comma;&commat;Service&comma;&commat;Controller&comma;&commat;Repository

    Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...