通過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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM