現階段需要做一個小專案,體量很小,業務功能比較簡單,就想到用最熟悉的.net來做,更何況現在.net core已經跨平臺,也可以在linux伺服器上部署。所以決定用.net core 3.1+mysql。為了起步更容易,用最新的abpV3(2020.6.4)來寫,這樣管理端也有了,api也有了,上手速度極快。不用最新的volo.abp的原因是,感覺,恩,純粹是感覺,才更新到2.9版本,怕專案過程中遇到坑比較耗時間解決,就還是用原來的abp吧。
之前用abp寫微服務框架的時候,.net core還處於2.1版本,現在已經都已經到3.1了。我的想法是基於.net core 3.1版本的abp,重新理一遍abp的相關知識,專案完成後把公共部分抽取出來開源。當然現在需求已經整理的差不多了,馬上就要開始編碼了。是不是少了點什麼?恩,程式碼生成器,不管怎麼樣開發這種業務系統,程式碼生成器是必需品,不然手工重複的建立檔案,複製貼上,修改命名能把人整死。所以期間我也會把程式碼生成器釋出出來,並等待合適的時機開源(主要是我好多年前寫的東西,需要優化一下程式碼結構)
整個專案流程:後臺框架選型->需求分析->原型設計->管理系統編碼->小程式端編碼
第一天,從官網下載了模板,先把他從sql server改為mysql,這個我在另一個部落格已經寫過一遍,下次搬過來。
這次遇到幾個問題:
1.因為一開始沒有mysql伺服器,就用mssql做測試,結果一直GetAll介面報錯
先檢視日誌:
'OFFSET' 附近有語法錯誤。
在 FETCH 語句中選項 NEXT 的用法無效。
關鍵字 'AS' 附近有語法錯誤。
想到資料庫版本是mssql 2008 r2,可能是語法不被支援。後來看到這篇文章,猜想得到驗證。
https://www.cnblogs.com/Zev_Fung/p/12034658.html
2.改為mysql後一直提示
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datetime2(6) NOT NULL,
`CreatorUserId` bigint NULL,
`DeleterUserId` bi' at line 3
解決方法是:把migrations資料夾下所有檔案都要刪除再add-migration,update-database,一開始沒注意ModelSnapshot這個檔案,一定要把這個也刪掉,坑了我好久。