最近要搭建新项目,由于尚未用过.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还跑不起来,看不到整个项目的全貌。这里就做为第一部分结束先。