品尝ABP vNext

ABP是一个开源应用程序框架,专注于基于ASP.NET Core的Web应用程序开发,也适合微服务开发。在除夕那天,ABP更新到了2.0.1,其实在一年前我就在关注它,但是那时候还不是很成熟,所以一直处于观望阶段。这回终于有机会了。

在之前我就用aspnetboilerplate开发过一些应用,它能确实给我们带来更加简便的开发体验,像之前要搭建一个新项目需要自己从0开始,ABP的话是直接通过了模版分分钟生成一个可用的项目,而且还包含了权限、多租户、审计日志等功能。
aspnetboilerplate
abp vnext

新建ABP项目

官方准备了两种新建ABP项目的方式:

  • ABP CLI,需要提前安装dotnet tool install -g Volo.Abp.Cli,然后abp new 项目名称新建项目
  • 通过在线生成项目,生成完成后下载到本地
    这里我选择在线生成的方式.在线项目生成地址https://abp.io/get-started.

初始化ABP WebAPI

使用EF Core Update-Database初始化数据库,这里我的数据库是MariaDB,所以我们还需要安装一个插件Volo.Abp.EntityFrameworkCore.MySQL,然后在DemoEntityFrameworkCoreModule类中,将options.UseSqlServer();修改为options.UseMySQL();,DemoMigrationsDbContextFactoryUseSqlServer改为UseMySql,修改本地数据库连接:"Default": "server=localhost;Database=abpdemo;user=root;Password=root;pooling=true;CharSet=utf8;port=3306;sslmode=none",将Abp.Demo.DbMigrator为启动项目。进入到程序包管理器控制台,选择Abp.Demo.EntityFrameworkCore.DbMigrations项目,

然后我们删除掉原有的SqlServer的初始化脚本:

1
2
3
4
5
6
PM> remove-migration
Build started...
Build succeeded.
Removing migration '20200106080719_Initial'.
Removing model snapshot.
Done.

我们重新生成:

1
2
3
4
PM> add-migration Initial
Build started...
Build succeeded.
To undo this action, use Remove-Migration.

然后执行update-database即可生成相应的表:

1
2
3
4
PM> update-database
Build started...
Build succeeded.
Applying migration '20200127080347_Initial'.

另外,MariaDB的时候,会出现

1
2
used in key specification without a key length  #longtext无法添加为unique等索引
Specified key was too long; max key length is 3072 bytes #字段太长无法加索引

我这里是通过修改类型和长度解决这些问题的,
执行成功后,我把表都删除掉,然后运行Abp.Demo.DbMigrator项目.

分别启动Abp.Demo.HttpApi.HostAbp.Demo.IdentityServerAbp.Demo.Web三个项目,



点击登录,默认用户名/密码:admin/1q2w3E*

You forgot to set the qrcode for Alipay. Please set it in _config.yml.
You forgot to set the qrcode for Wechat. Please set it in _config.yml.
You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×