最近要搭建新專案,因為還沒有用過.net core,所以想用.net core的環境搭建新專案,因為不熟悉.net core的架構,所以就下載了abp專案先了解一下,
但是自己太菜了,下載了模板專案,在啟動的程序中一波三折,其曲折真是無法用言語形容,(但是我沒有灰心!沒有什么技術是在努力的情況下學不會的,是嘛)
在搜集資訊的程序中,很多網友分享的資料都很有幫助,但是有一個問題的方法對于我這邊遇到的問題卻用不上,因為問題沒有得到解決,但是卻給了我不同的思路,從而讓問題得到解決,模板專案終于順利啟動,
先貼上我參考的帖子,正是因為有優秀的網友的分享,我才打開了abp模板專案的大門!(不多說了,遠程握手為敬吧,哈哈)
參考資料
ABP入門教程(一)啟動模版專案
ABP (.Net Core) 使用MySQL資料庫
按照參考資料的操作,只需要簡單幾步就可以把模板專案啟動起來,但是!不知道為何,任何新鮮的技術到了我這里,就要費上N個步驟,花費九牛二虎之力,絞盡腦汁都還是一堆紅色報錯,滿屏紅讓我沮喪,讓我懷疑人生......
emmmm直接開始從步驟說起吧,
-
abp模板下載
abp模板下載
-
VS2019打開專案解決方案(用VS2017應該也可以,不過要額外下載.net sdk 3.0安裝,)
-
找到【解決方案名.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.designinstall-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 InitUpdate-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還跑不起來,看不到整個專案的全貌,這里就作為第一部分結束先,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/9712.html
標籤:.NET Core
