通过Migration在EF6中用多个DbContext

EF EF6 C# Migration


前言

本人在阿里云申请了个免费的空间,之前已经存放了一个项目,由于之前一直没时间,近期比较有空,所以想开发个个人博客,但是由于阿里云没有给我们权限来新建数据库,因此只能在原有的数据库另外“瓜分”一部分空间来做个人博客的数据库,我是在之前的JackSite.Entities实体项目上开发,因此只需要在定义一个DbContext即可。

PS:本次讨论的使用范围:通过EF6(低版本是否支持多数据上下文我并不了解)用一个数据库构造多个DbContext

实现目标

原本默认Migration的文件是在Migrations,我现在希望已如下的形式来存放

Migrations项目中添加文件夹AMigration,BMigration文件来区分不同的DbContext迁移文件。

设置多数据上下文

首先我查找了下资料并未发现有类似Move-Migrations或者Update-Migrations的命令,因此我设想是是否同样是通过Enable-Migrations进行设置

通过google 搜索关键字Single Database Multiple DbContext 搜到确实和我想象的一致都是通过此命令来设置多个数据库上下文的迁移文件路径 在抱着试试看的态度,进行了如下命令输入:

  1. Enable-Migrations -ContextTypeName:JackSite.Entities.Models.StudyTime.JackDbContext -MigrationsDirectory:Migrations\StudyTimeMigrations

ContextTypeNameDbContext的位置,即DbContext的命名空间加上DbContext的名称

MigrationsDirectory:需要迁移到的目标文件夹

PS:注意MigrationsDirectory:Migrations\StudyTimeMigrations中的'\'不要打错如输成'/'可能会引发一些问题

同样我们对另一个数据上下文进行设置

  1. Enable-Migrations -ContextTypeName:JackSite.Entities.Models.Blog.BlogDbContext -MigrationsDirectory:Migrations\BlogMigrations

PS:这里两个DbContext用的是同样的连接串

更新数据脚本

最后通过运行Add-Migrations命令

这里需要注意:如果我们只有一个数据上下文,通过Add-Migrations命令会自动选择唯一的DbContext,但是如果有多个DbContext,我们必须指定我们需要对那个DbContext进行修改

  1. Add-Migration -ConfigurationTypeName JackSite.Entities.Migrations.BlogMigrations.Configuration InitBlogDb

这里通过-ConfigurationTypeName指定Configuration 后面接着是Configuration的路径,然后接着是我们取得名字InitBlogDb

EF会找到指定的Configuration,并添加XXXX_InitBlogDb,结构如下图所示:



最后通过Update-Database进行更新

同样,我们这里需要指定需要更新哪个Configuration

  1. Update-Database JackSite.Entities.Migrations.BlogMigrations.Configuration

参考资料

Entity Framework 6 Code First Migrations with Multiple Data Contexts

通过Migration在EF6中用多个DbContext的更多相关文章

  1. devexpress entity framework 与 asp.net mvc的坑

    最近在做一个使用ASP.NET MVC DEVEXPRESS和EF的OA模块 遇到不少问题这里记录一下: 1 如果项目中存在多个上下文类(DBContext的派生类),在做数据迁移的时候需要在不同目录 ...

  2. Entity Framework入门教程(11)---EF6中的异步查询和异步保存

    EF6中的异步查询和异步保存 在.NET4.5中介绍了异步操作,异步操作在EF中也很有用,在EF6中我们可以使用DbContext的实例进行异步查询和异步保存. 1.异步查询 下边是一个通过L2E语法 ...

  3. ef core一个数据库多个dbcontext

    如一个项目存在多个DbCcontext且使用同一个数据库,关系: 无关联:donetcli指定具体的dbcontext类名生成migration classes 有关联:子dbcontext继承父db ...

  4. 10.Configure One-to-Many(配置一对多关系)【Code-First系列】

    现在,我们将学习怎么配置一对多的关系. Visit Entity Relationship section to understand how EF manages one-to-one, one-t ...

  5. Entity Framework学习笔记(二)----CRUD(1)

    请注明转载地址:http://www.cnblogs.com/arhat 这篇文章老魏和大家分享一下Entity Framework的CRUD操作,在这之前呢,老魏先说一下老魏对EF的一个整体的认识, ...

  6. Entity Framework入门教程(17)---记录和拦截数据库命令

    记录和拦截数据库命令 这一节介绍EF6怎么记录和拦截发送给数据库的查询和操作命令. 1.记录EF发送给数据库命令(DbContext.Database.Log) 以前给了查看EF发送给数据库的命令我们 ...

  7. [2014-11-02]为EF6+Mysql+CodeFirst启用Migration

    刚为一个EF6 CodeFirst项目启用了Migration,记几个注意点. 启用方法 在Nuget控制台使用以下命令启用Migration Enable-Migrations #此时生成当前数据库 ...

  8. EF6 Code First & Auto Migration on Appharbor

    之前不小心看到EF的code first在appharbor上进行migration的时候比较麻烦,今天碰巧也要更新数据库了,顺便试试. modify model public class SiteI ...

  9. MVC4建立DBContext的EF6数据

    MVC4建立DBContext的EF6数据时 1.需要using System.Data.Entity;命名空间 2.此命名空间需要安装EntityFromwork.dll,此dll可以在项目——&g ...

随机推荐

  1. volatile适用场景

    1.volatile最适用一个线程写,多个线程读的场合. 如果有多个线程并发写操作,仍然需要使用锁或者线程安全的容器或者原子变量来代替.(摘自Netty权威指南) 疑问:如果只是赋值的原子操作,是否可 ...

  2. PDF按模板出力,多个PDF合并

                 const string   TEMP_PREXFIX = "Temp_";                                       ...

  3. springmvc数据处理模型

    1.ModelAndView 实现: @RequestMapping("/testModelAndView") public ModelAndView testModelAndVi ...

  4. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

  5. springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)

    首先是导入jar包: web.xml: <servlet> <servlet-name>mvc-dispatcher</servlet-name> <serv ...

  6. django不要设置datetime字段auto_now=True

    django model的datetime字段如果设置了auto_now=True的话,update该记录的时候即使没有更新它的时间字段,它的时间字段依然会执行一遍auto_now,时间会变成当前更新 ...

  7. nyoj 70 阶乘因式分解(二)

    点击打开链接 阶乘因式分解(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 给定两个数n,m,其中m是一个素数. 将n(0<=n<=2^31)的阶乘分解 ...

  8. FPGA一个博客学习

    FPGA一个博客学习 http://bbs.ednchina.com/BLOG_PERSONALCAT_100185_2001619.HTM

  9. [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码

    一.在工程中添加AddressBook.framework和AddressBookUI.framework 二.获取通讯录 1.在infterface中定义数组并在init方法中初始化 ? 1 2 3 ...

  10. NSDictionary、NSMutableDictionary的基本用法

    NSDictionary.NSMutableDictionary的基本用法 1.不可变词典NSDictionary 字典初始化 NSNumber *numObj = [NSNumber numberW ...