使用migrate.exe執行EF code first 遷移

来源:http://www.cnblogs.com/fzrain/archive/2016/06/14/5583832.html
-Advertisement-
Play Games

Code First 遷移可用於從 Visual Studio 內部更新資料庫,但也可通過命令行工具 migrate.exe 來執行。本頁簡單介紹如何使用 migrate.exe 對資料庫執行遷移。 複製 migrate.exe 在使用 NuGet 安裝實體框架時,migrate.exe 位於下載包 ...


Code First 遷移可用於從 Visual Studio 內部更新資料庫,但也可通過命令行工具 migrate.exe 來執行。本頁簡單介紹如何使用 migrate.exe 對資料庫執行遷移。

複製 migrate.exe

在使用 NuGet 安裝實體框架時,migrate.exe 位於下載包的 tools 文件夾中。在 <項目文件夾>\packages\EntityFramework.<版本>\tools 中

有了 migrate.exe 之後,需要將其複製到包含遷移的程式集位置。

如果應用程式面向 .NET 4 而不是 4.5,則還需要將 Redirect.config 複製到這個位置,並將其重命名為 migrate.exe.config。這樣,migrate.exe 會讓正確的綁定重定向能夠找到實體框架程式集。

.NET 4.5 .NET 4.0

註意:migrate.exe 目前不支持 x64 程式集。

使用 Migrate.exe

將 migrate.exe 移至正確的文件夾之後,應能夠用它對資料庫執行遷移。這個實用工具的唯一目的是執行遷移。它不能生成遷移或創建 SQL 腳本。

查看選項

Migrate.exe /?


上面顯示了與此實用工具關聯的幫助頁。請註意,要讓此選項起作用,在運行 migrate.exe 的同一位置需要有 EntityFramework.dll。

遷移至最新遷移

Migrate.exe MyMvcApplication.dll /startupConfigurationFile=”..\web.config”


在運行 migrate.exe 時,唯一的強制參數是程式集,該程式集包含嘗試運行的遷移,但如果不指定配置文件,它將使用所有基於約定的設置。

遷移至特定遷移

Migrate.exe MyApp.exe /startupConfigurationFile=”MyApp.exe.config” /targetMigration=”AddTitle”


如果需要將遷移運行至特定遷移,可以指定遷移的名稱。這將根據需要運行所有以前的遷移,直至到達指定的遷移。

指定工作目錄

Migrate.exe MyApp.exe /startupConfigurationFile=”MyApp.exe.config” /startupDirectory=”c:\MyApp”


如果程式集有依賴項或相對於工作目錄讀取文件,則需要設置 startupDirectory。

指定要使用的遷移配置

Migrate.exe MyAssembly CustomConfig /startupConfigurationFile=”..\web.config”


如果有多個遷移配置類(從 DbMigrationConfiguration 繼承的類),則需要指定要用於此執行的類。可通過指定不帶開關的可選第二個參數來進行這種指定,如上所示。

提供連接字元串

Migrate.exe BlogDemo.dll /connectionString=”Data Source=localhost;Initial Catalog=BlogDemo;Integrated Security=SSPI” /connectionProviderName=”System.Data.SqlClient”


如果希望在命令行指定連接字元串,還必須指定提供程式名稱。不指定提供程式名稱會導致異常。

 

常見問題

錯誤消息 解決方案
未經處理的異常: System.IO.FileLoadException: 未能載入文件或程式集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一個依賴項。找到的程式集清單定義與程式集引用不匹配。(異常來自 HRESULT: 0x80131040) 這通常表示您正在沒有 Redirect.config 文件的情況下運行 .NET 4 應用程式。您需要將 Redirect.config 複製到 migrate.exe 所在的位置,並將其重命名為 migrate.exe.config。

未經處理的異常: System.IO.FileLoadException: 未能載入文件或程式集“EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一個依賴項。找到的程式集清單定義與程式集引用不匹配。(異常來自 HRESULT: 0x80131040) ---> System.IO.FileLoadException: 無法載入

文件或程式集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一個依賴項。找到的程式集清單定義與程式集引用不匹配。(異常來自 HRESULT:

0x80131040)

此異常表示您在將 Redirect.config 複製到 migrate.exe 所在位置的情況下運行 .NET 4.5 應用程式。如果應用程式是 .NET 4.5,則無需內部有重定向的配置文件。刪除 migrate.exe.config 文件。
錯誤: 無法將資料庫更新為與當前模型,因為存在待定更改並且禁用了自動遷移。將待定模型更改寫入基於代碼的遷移或啟用自動遷移。將 DbMigrationsConfiguration.AutomaticMigrationsEnabled 設置為 true,啟用自動遷移。 如果在創建遷移以處理對模型所做的更改之前運行遷移,並且資料庫與模型不匹配,會發生此錯誤。這種錯誤的一個示例是向模型類添加屬性,然後在不創建遷移以升級資料庫的情況下運行 migrate.exe。
錯誤: 沒有為成員“System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”解析類型。 此錯誤可能是因指定不正確的啟動目錄造成的。此目錄必須是 migrate.exe 所在的位置

未經處理的異常: System.NullReferenceException: 對象引用未設置為某個對象的實例。

   在 System.Data.Entity.Migrations.Console.Program.Main(String[] args) 處

此錯誤可能是因沒有為要使用的方案指定所需參數引起的。例如,指定了一個連接字元串,但沒有指定提供程式名稱。
錯誤: 在程式集“ClassLibrary1”中找到多個遷移配置類型。請指定要使用的遷移配置類型的名稱。 正如錯誤所描述的,給定程式集中有多個配置類。必須使用 /configurationType 開關來指定要使用的配置類。
錯誤: 未能載入文件或程式集“<assemblyName>”或它的某一個依賴項。給定程式集名稱或基本代碼無效。(異常來自 HRESULT: 0x80131047) 此錯誤可能是因錯誤指定程式集名稱或沒有程式集名稱引起的
錯誤: 未能載入文件或程式集“<assemblyName>”或它的某一個依賴項。嘗試載入格式不正確的程式。 如果嘗試對 x64 應用程式運行 migrate.exe,會發生這種情況。EF 5.0 及更低版本僅對 x86 有效。
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天來簡單聊聊Suggestion產品 什麼是Suggestion服務? 一圖勝千言: 當你想要搜索某個長詞語或者一句話輸入部分時,Suggestion服務預測你極大可能的候選項,並羅列出來,供你選擇。 產品的意義: 1. 降低用戶搜索的輸入成本,用戶總是懶惰的,誰能讓用戶最懶惰還能幫他把事辦好,這 ...
  • 轉載別人的轉載,原作者都不知道了 在項目中經常用到DataTable,如果DataTable使用得當,不僅能使程式簡潔實用,而且能夠提高性能,達到事半功倍的效果,現對DataTable的使用技巧進行一下總結。 一、DataTable簡介 (1)構造函數 DataTable() 不帶參數初始化Data ...
  • 之所以寫這個,是因為本來想寫一個Youtube刷評論的工具,把登錄做出來了,後面就沒繼續做下去。 涉及到基本的HttpWatch的應用以及Fiddler的應用(Fd主要用來排查問題,通過對比 瀏覽器和vs代碼 找出問題所在!以瀏覽器為標準)。 通過HttpWatch抓包分析,我把登錄Youtube一 ...
  • 在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Directory類,也可以使用FileInfo類和DirectoryInfo類,本文將詳細介紹,需要的朋友可以參考。 在.Net中,對文件(File)和文件夾(Folder)的操作可以使用File類和Director... ...
  • 以下兩種方法均為全站出錯處理 方法一: 1、在Web.config配置文件中<system.web></system.web>中添加<customErrors mode="On" defaultRedirect="404.htm" ></customErrors>節點 2、添加錯誤處理頁面:Appl ...
  • 下麵我們就動手來創建一個線程,使用Thread類創建線程時,只需提供線程入口即可。(線程入口使程式知道該讓這個線程乾什麼事) 在C#中,線程入口是通過ThreadStart代理(delegate)來提供的,你可以把ThreadStart理解為一個函數指針,指向線程要執行的函數,當調用Thread.S ...
  • 前幾個月做了一個旅游網站,有PC站和手機站,涉及支付寶支付功能. 要求:PC站下的單,用戶用手機登錄也能支付;同理,手機站下的單,PC端登錄也能支付. 附支付寶開放平臺網址:即時到賬 ,手機網站支付. 當然啦,最基本的就是要申請賬號,簽約產品.完事之後,把官網的DEMO跑起來. PC端DEMO:cr ...
  • 單點登陸設計SSO英文全稱Single Sign On,單點登錄。SSO是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登錄映射到其他應用中用於同一個用戶的登錄的機制。它是目前比較流行的企業業務整合的解決方案之一 現在很多企業級應用都基本會去實現單點登陸 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...