最近要搭建新項目,由於尚未用過.net core,因此想用.net core的環境搭建新項目,由於不熟悉.net core的架構,因此就下載了abp項目先了解一下。
由於本身太菜了,下載了模板項目,在啓動的過程當中一波三折,其曲折真是沒法用言語形容。(可是我沒有灰心!沒有什麼技術是在努力的狀況下學不會的,是嘛)
在蒐集信息的過程當中,不少網友分享的資料都頗有幫助,可是有一個問題的方法對於我這邊遇到的問題卻用不上,由於問題沒有獲得解決。可是卻給了我不一樣的思路,從而讓問題獲得解決,模板項目終於順利啓動。前端
先貼上我參考的帖子,正是由於有優秀的網友的分享,我纔打開了abp模板項目的大門!(很少說了,遠程握手爲敬吧,哈哈)vue
參考資料mysql
按照參考資料的操做,只須要簡單幾步就能夠把模板項目啓動起來,可是!不知道爲什麼,任何新鮮的技術到了我這裏,就要費上N個步驟,花費九牛二虎之力,絞盡腦汁都仍是一堆紅色報錯,滿屏紅讓我沮喪,讓我懷疑人生......json
emmmm直接開始從步驟提及吧。架構
abp模板下載app
abp模板下載工具
VS2019打開項目解決方案(用VS2017應該也能夠,不過要額外下載.net sdk 3.0安裝。)sqlserver
找到【解決方案名.Web.Host】項目裏面的appsettings.json,修改數據庫鏈接字符串
由於我本地的sqlserver沒有鏈接成功,缺配置工具,沒有選擇重裝。改換mysql配置。因此個人配置是
"ConnectionStrings": { "Default": "server=localhost;uid=root;pwd=123;port=3306;database=ExtraModuleDb;" }
在【解決方案名.EntityFrameworkCore】用Nuget添加安裝引用(也能夠參考上面的第二個連接,用命令執行)
install-package pomelo.entityframeworkcore.mysql.design
install-package pomelo.entityframeworkcore.mysql
在【解決方案名.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); }`
數據遷移
最好先刪除【解決方案名.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還跑不起來,看不到整個項目的全貌。這裏就做爲第一部分結束先。