在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
更详细的内容,可以“阅读原文”。就我自己的实践经验而言,有几点可以分享给大家:
- 现在Migration的命令不是EF6之前那样在Package Manager Console中运行了,而是在dnx命令下运行
- 如果dnx命令无效,那么可能是没有执行“dnvm use”
- 如果之前没有启用Migration,最好打算开始迁移之前执行一次“dnx . ef migration add InitialCreate”来添加一个类似之前的初始迁移
- 如何不想通过命令来应用迁移或者说想在代码中自动应用迁移,那么可以创建如下这样的方法,在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中进行数据迁移的更多相关文章
- Entity Framework Core中的数据迁移命令
使用程序包管理控制台输入命令. 数据迁移命令: Add-Migration 对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的. Remove-Migration 删除上次的迁移 Sc ...
- 20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 ...
- 深入了解Entity Framework框架及访问数据的几种方式
一.前言 1.Entity Framework概要 Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案.该框架曾经为.NET Fra ...
- 浅析Entity Framework Core中的并发处理
前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处 ...
- 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?
做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...
- laravel中的数据迁移和数据填充
laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students ...
- Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(一)
1. 案例1 - 类型和表之间的EF代码优先映射 从EF6.1开始,有一种更简单的方法可以做到这一点.有关 详细信息,请参阅我的新EF6.1类型和表格之间的映射. 直接贴代码了 从EF6.1开始,有一 ...
- .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法
本人刚学.net core,因此在学习过程中会遇上许许多多的坑.每一位初学者最大的问题在于资料的查看不仔细或是没有正确理解里面的内容,导致在后面自己在不知道错误的情况下做了一个小动作.对于完全没有理解 ...
- 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 ...
随机推荐
- adb 服务端口2037被占,导致adb和appium无法工作
症状1: 命令行运行 adb 相关命令,提示如下: adb server is out of date. killing...ADB server didn't ACK* failed to star ...
- iOS App Extensions 推荐文章
写的非常不错,读完后,基本的extension的套路就清楚了,也是我们的园友写的,感谢他: http://www.cnblogs.com/xdream86/p/3855932.html 下面这个教程是 ...
- java web 学习 --第五天(Java三级考试)
第四天的学习内容:http://www.cnblogs.com/tobecrazy/p/3454860.html Response对象 response对象主要是向客户端浏览器发送二进制数据,如输出C ...
- Python~win32com~Excel
import win32com.client #w=win32com.client.Dispatch("Word.Application") #w.Visible=1 o=win3 ...
- maven加载本地lib下的jar包(pom.xml)
1.将本地jar放置到仓储库在jar包目录下 mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserve ...
- C#传真传址 结构体
1.传真 传址 namespace 传值_传址 { class Program { //格式1:无参无返 public void LeiJia() { Console.Write("请输入 ...
- Android Volley入门到精通:初识Volley的基本用法
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- GridView中使用分页控件
前台:导入<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix= ...
- 解决Idea创建maven-archetype-webapp项目无java目录的问题
一.背景 在适用IDEA创建maven-archetype-webapp项目的时候,创建完成后发现在main文件夹下没有java源文件夹,不少小伙伴也遇到该问题,但不知道怎么解决,下面我就来分享解决步 ...
- 获取driver网络路径名称
'get the web path of the drive s: Dim MM As New Management.ManagementObject(String.Format("win3 ...