ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)

最近要搭建新项目,由于尚未用过.net core,因此想用.net core的环境搭建新项目,由于不熟悉.net core的架构,因此就下载了abp项目先了解一下。
由于本身太菜了,下载了模板项目,在启动的过程当中一波三折,其曲折真是没法用言语形容。(可是我没有灰心!没有什么技术是在努力的状况下学不会的,是嘛)
在搜集信息的过程当中,不少网友分享的资料都颇有帮助,可是有一个问题的方法对于我这边遇到的问题却用不上,由于问题没有获得解决。可是却给了我不一样的思路,从而让问题获得解决,模板项目终于顺利启动。前端

先贴上我参考的帖子,正是由于有优秀的网友的分享,我才打开了abp模板项目的大门!(很少说了,远程握手为敬吧,哈哈)vue

参考资料mysql

ABP入门教程(一)启动模版项目sql

ABP (.Net Core) 使用MySQL数据库数据库

按照参考资料的操做,只须要简单几步就能够把模板项目启动起来,可是!不知道为什么,任何新鲜的技术到了我这里,就要费上N个步骤,花费九牛二虎之力,绞尽脑汁都仍是一堆红色报错,满屏红让我沮丧,让我怀疑人生......json

emmmm直接开始从步骤提及吧。架构

  1. abp模板下载app

    abp模板下载工具

  2. VS2019打开项目解决方案(用VS2017应该也能够,不过要额外下载.net sdk 3.0安装。)sqlserver

  3. 找到【解决方案名.Web.Host】项目里面的appsettings.json,修改数据库链接字符串
    由于我本地的sqlserver没有链接成功,缺配置工具,没有选择重装。改换mysql配置。因此个人配置是

    "ConnectionStrings": { "Default": "server=localhost;uid=root;pwd=123;port=3306;database=ExtraModuleDb;" }

  4. 在【解决方案名.EntityFrameworkCore】用Nuget添加安装引用(也能够参考上面的第二个连接,用命令执行)

    install-package pomelo.entityframeworkcore.mysql.design

    install-package pomelo.entityframeworkcore.mysql

  5. 在【解决方案名.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);
     }`
  6. 数据迁移

    最好先删除【解决方案名.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还跑不起来,看不到整个项目的全貌。这里就做为第一部分结束先。

相关文章
相关标签/搜索