ABP (.Net Core 3.1版本) 使用MySQL資料庫遷移啟動模板項目(1)

来源:https://www.cnblogs.com/mooncake-wong/archive/2020/06/19/13163211.html
-Advertisement-
Play Games

最近要搭建新項目,因為還沒有用過.net core,所以想用.net core的環境搭建新項目,因為不熟悉.net core的架構,所以就下載了abp項目先瞭解一下。 但是自己太菜了,下載了模板項目,在啟動的過程中一波三折,其曲折真是無法用言語形容。(但是我沒有灰心!沒有什麼技術是在努力的情況下學不 ...


最近要搭建新項目,因為還沒有用過.net core,所以想用.net core的環境搭建新項目,因為不熟悉.net core的架構,所以就下載了abp項目先瞭解一下。
但是自己太菜了,下載了模板項目,在啟動的過程中一波三折,其曲折真是無法用言語形容。(但是我沒有灰心!沒有什麼技術是在努力的情況下學不會的,是嘛)
在搜集信息的過程中,很多網友分享的資料都很有幫助,但是有一個問題的方法對於我這邊遇到的問題卻用不上,因為問題沒有得到解決。但是卻給了我不同的思路,從而讓問題得到解決,模板項目終於順利啟動。

先貼上我參考的帖子,正是因為有優秀的網友的分享,我才打開了abp模板項目的大門!(不多說了,遠程握手為敬吧,哈哈)

參考資料

ABP入門教程(一)啟動模版項目

ABP (.Net Core) 使用MySQL資料庫

按照參考資料的操作,只需要簡單幾步就可以把模板項目啟動起來,但是!不知道為何,任何新鮮的技術到了我這裡,就要費上N個步驟,花費九牛二虎之力,絞盡腦汁都還是一堆紅色報錯,滿屏紅讓我沮喪,讓我懷疑人生......

emmmm直接開始從步驟說起吧。

  1. abp模板下載

    abp模板下載

  2. VS2019打開項目解決方案(用VS2017應該也可以,不過要額外下載.net sdk 3.0安裝。)

  3. 找到【解決方案名.Web.Host】項目裡面的appsettings.json,修改資料庫連接字元串
    因為我本地的sqlserver沒有連接成功,缺配置工具,沒有選擇重裝。改換mysql配置。所以我的配置是

    "ConnectionStrings": { "Default": "server=localhost;uid=root;pwd=123;port=3306;database=ExtraModuleDb;" }

  4. 在【解決方案名.EntityFrameworkCore】用Nuget添加安裝引用(也可以參考上面的第二個鏈接,用命令執行)

    install-package pomelo.entityframeworkcore.mysql.design

    install-package pomelo.entityframeworkcore.mysql

  5. 在【解決方案名.EntityFrameworkCore】裡面找到DbContextConfigurer文件,修改資料庫配置連接

    修改資料庫配置連接

     `public static void Configure(DbContextOptionsBuilder<KYKWMSExtraModuleDbContext> builder, string connectionString)
     {
         builder.UseMySql(connectionString);
     }
    
     public static void Configure(DbContextOptionsBuilder<KYKWMSExtraModuleDbContext> builder, DbConnection connection)
     {
         builder.UseMySql(connection);
     }`
    
  6. 數據遷移

    最好先刪除【解決方案名.EntityFrameworkCore】下的【Migration】文件夾

    然後將【解決方案名.Web.Host】設為啟動項目,在程式包管理器控制台(Nuget控制台)里設定預設項目為EntityFrameworkCore。

    在程式包管理器控制台輸入命令: Add-Migration Init

    生成成功,會看到【解決方案名.EntityFrameworkCore】下的【Migration】文件夾下麵多了三個文件。

    然後更新資料庫,abp會自動建庫。在程式包管理器控制台輸入命令: Update-Database -Verbose

    到了這裡呢,問題就來了,我正是被這個問題困擾了一個上午。

    好熟悉的錯誤:You have an error in your SQL syntax

    肉眼可見,datetime那裡帶了一個長度,而在mysql語句創建表的時候,datetime類型是不允許帶長度的。

    於是我的做法就是,手動把代碼裡面datetime(6)全部替換成datetime,再次在程式包管理器控制台輸入命令: Update-Database -Verbose

    但得到的結果仍然是You have an error in your SQL syntax。反覆操作 Add-Migration Init Update-Database -Verbose 後,依然沒辦法解決這個問題,我有一點無奈,同時有一點不甘心。我可是個老鳥啊,遇到未知的問題,解決問題的方式就只能是坐著嘆氣了麽?! (肯定不是!)

    午休睡了一覺,下午起來接著解決這個問題。我看了一下,為什麼是添加 pomelo.entityframeworkcore.mysql 引用呢?這個產商不是官方Oracle的呢。以前的項目不都是添加MySql.Data嗎?帶著這個疑惑,於是我就嘗試著換 MySql.Data 去添加引用,添加引用的時候,發現它有一個EntityFrameworkCore的版本: MySql.Data.EntityFrameworkCore ,於是把兩個都安裝上。(一定是要兩個都安裝,只安裝 MySql.Data 是不完整的,至少在資料庫配置鏈接出錯的時候,是沒有提示,不知道應該改成UseMySQL才可用)

安裝好後,運行發現有報錯,原來資料庫配置連接裡面的MySql要大寫的才對。(其實報錯的時候會很疑惑,明明是MySql啊,為什麼不支持了呢?也不知道是要改大寫,把滑鼠放上去選擇修複的時候,就變成大寫,錯誤就消失了。)

就這樣編譯成功!說明用官方的包也是可以用的!

接著重新重覆第6步的命令:

刪除【Migration】文件夾下麵的文件,在程式包控制台執行命令:

Add-Migration Init

Update-Database -Verbose

好了!看到表成功的在創建!

但是,不能開心太早!問題又來了!

字元串的長度太長了,最後一句提示varchar max length=65535。我還不知道這些代碼是怎麼生成的,要怎麼把最基礎的代碼改掉才不至於報低級的錯誤。所以在這裡我解決的方法就是手動去把【Migration】文件夾下麵的文件,超出數據類型長度的全部手動修改。第一次沒有改全的,報一次錯改一次,後面基本都是數據類型長度超出的問題。全部改好了,再 Update-Database,最終資料庫成功創建好,項目也運行起來了。

emmmm,前端的因為還不太熟悉這種分離式的項目,vue.js還跑不起來,看不到整個項目的全貌。這裡就作為第一部分結束先。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ###描述 給定一個字元串,在字元串中找到第一個連續出現至少k次的字元。 ###輸入 第一行包含一個正整數k,表示至少需要連續出現的次數。1 ⇐ k ⇐ 1000。 第二行包含需要查找的字元串。字元串長度在1到1000之間,且不包含任何空白符。 ###輸出 若存在連續出現至少k次的字元,輸出該字元; ...
  • 案例故事: 任何一款終端產品只要涉及視頻播放,就肯定涉及視頻的解碼播放測試, 作為一名專業的多媒體測試人員,我們需要一堆的規範的標準視頻測試文件, 但是發現現有的視頻資源名字命名的很隨意比如:big_buck_bunny_720p_h264.mp4, 以上命名不能看出視頻文件的具體編碼規格, 測試經 ...
  • 結論: PHP中提供了反射類來解析類的結構; 通過反射類可以獲取到類的構造函數及其參數和依賴; 給構造函數的參數遞歸設置預設值後,即可使用這些帶預設值的參數通過 newInstanceArgs 實例化出類對象; 在實例化的過程中,依賴的類也會被實例化,從而實現了依賴註入。 PHP中反射類的常用方法: ...
  • GIT本地庫操作基本原理 GIT作為分散式版本庫軟體,每個機器上都是一個版本庫。 git初始化後,有三個區,分別是 工作區,暫存區,本地庫; 工作區是我們編輯代碼的區別,包括新增,修改,刪除代碼操作,我們編輯代碼後,添加到暫存區; 暫存區是臨時存儲代碼的地方,方便批量提交數據到本地庫; 本地庫是最終 ...
  • 上一篇文章講到了CentOS6.7的安裝教程,安裝步驟到時區選擇這塊了,這篇文章接上篇文章,繼續講述CentOS6.7的安裝教程,直至安裝完成。 17、設置root的登錄密碼,日後登錄虛擬機,用戶名就是root,密碼就是現在設定的這個,當然密碼後期是可以更改的,這點不用操心。 18、當密碼設置的過於 ...
  • 今天就來吐槽位元組跳動的面試...... 有種飄飄然的趕腳...... 人們都說,這個世界上有兩種人註定單身,一種是太優秀的,另一種是太平凡的。 我一聽, 呀?那我這豈不是就不優秀了嗎,於是毅然決然和女朋友分了手。 人們都說,互聯網寒冬來了,這個時候還在大面積招人的公司,必然是牛逼的公司。 而這個時候 ...
  • 在 C# 中,我們可以使用 WMI 類中的 Win32_Service 或者 Win32 API 中的函數 ChangeServiceConfig 來修改本地或遠程電腦 Windows 服務登錄身份 (賬戶) 的用戶名和密碼。 1、使用 Win32 API 修改服務登錄身份信息: 使用 Win32 ...
  • 在Startup文件的ConfigureServices函數里註入服務 public void ConfigureServices(IServiceCollection services) { #region Cors跨域請求 services.AddCors(c => { c.AddPolicy( ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...