最近要搭建新项目,因为还没有用过.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 builder, string connectionString) { builder.UseMySql(connectionString); } public static void Configure(DbContextOptionsBuilder 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才可用)
![2aa65ab3cecf6ff7882b2b3b5dfd3de3.png](https://i-blog.csdnimg.cn/blog_migrate/7fc2a4fe3a8e596cb53929b2e5a0f575.jpeg)
安装好后,运行发现有报错,原来数据库配置连接里面的MySql要大写的才对。(其实报错的时候会很疑惑,明明是MySql啊,为什么不支持了呢?也不知道是要改大写,把鼠标放上去选择修复的时候,就变成大写,错误就消失了。)
![7ee470cf155473bbc253e955e4ea129c.png](https://i-blog.csdnimg.cn/blog_migrate/e127876b288d993a9176f5d882e4e5b7.jpeg)
![41c1eb6e9a3d3929ab147d8a09699118.png](https://i-blog.csdnimg.cn/blog_migrate/6c3dc76a244d64c3a5ead85635ae75ff.jpeg)
就这样编译成功!说明用官方的包也是可以用的!
接着重新重复第6步的命令:
删除【Migration】文件夹下面的文件,在程序包控制台执行命令:
Add-Migration Init
Update-Database -Verbose
好了!看到表成功的在创建!
但是,不能开心太早!问题又来了!
![2cd6e90f808138410fa1d3a9e46bd462.png](https://i-blog.csdnimg.cn/blog_migrate/86b1defd44da39f3d0b23991780c7382.jpeg)
字符串的长度太长了,最后一句提示varchar max length=65535。我还不知道这些代码是怎么生成的,要怎么把最基础的代码改掉才不至于报低级的错误。所以在这里我解决的方法就是手动去把【Migration】文件夹下面的文件,超出数据类型长度的全部手动修改。第一次没有改全的,报一次错改一次,后面基本都是数据类型长度超出的问题。全部改好了,再 Update-Database,最终数据库成功创建好,项目也运行起来了。
![66720a55253687843f746618ba616a3d.png](https://i-blog.csdnimg.cn/blog_migrate/b2f7bffd391125a920ca87de72afc28f.jpeg)
![bd37bf9d30572297bd3c0a06f35b5df4.png](https://i-blog.csdnimg.cn/blog_migrate/30e3c3d22ede92f75c7c58065ba8a492.jpeg)
![3b11559664891628873f119611debbec.png](https://i-blog.csdnimg.cn/blog_migrate/0ecc17164adc524c1c22f29afaaaf6f0.jpeg)
emmmm,前端的因为还不太熟悉这种分离式的项目,vue.js还跑不起来,看不到整个项目的全貌。这里就作为第一部分结束先。