ABP框架应用
ABP框架应用
参考资料:https://www.cnblogs.com/farb/p/ABPTheory.html
了解:
-
使用工具:vs2017
-
开发目标:webapi
-
使用Mysql数据库
API登陆:*.Core >> Authorization >> User.cs 文件中有登陆的账号和密码
账号:admin
密码:123qwe
1.模板生成
后端框架模版生成地址:https://aspnetboilerplate.com/

2.mysql数据库配置
注:ABP自带的数据库为sqlserver
-
下载依赖【删除sqlserver的那一个依赖】
-
*.EntityFrameworkCore层添加依赖【注意版本】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ugsv6ky-1587035325664)(https://s1.ax1x.com/2020/04/15/JP9hBF.png)]
-
*.core层添加依赖【版本与entityframeworkcore层的同依赖版本一致】
Microsoft.EntityFrameworkCore.Design
-
-
修改文件(4个文件:3个appsettings.json修改数据库连接),修改目录如下:
-
*.migrator
-
*.web.host
-
*.web.mvc
"Default": "Server=localhost; Database=数据库名; Uid=root;Pwd=密码;"
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLse14EP-1587035325667)(https://s1.ax1x.com/2020/04/15/JPCb5j.png)]
-
DbContextConfigurer(EntityFrameworkCore下)
//builder.UseSqlServer(connectionString); builder.UseMySql(connectionString); //builder.UseSqlServer(connection); builder.UseMySql(connection);
-
-
删除Migrations下的所有文件(自带的sqlserver数据库同步文件)
-
数据库迁移
Add-Migration NewInit
update-database
迁移错误:
Could not load assembly 'AbpTwo.EntityFrameworkCore'. Ensure it is referenced by the startup project 'AbpTwo.Core'.
原因:启动方式选择错误,即vs2017上方启动模式选择不正确,正确选择为:*.Web.host
数据库迁移时,需要注意上面的默认项目选择efcore
-
启动【启动模式选择Web.Host】
以此模式启动时,会出现一个启动终端,也可以用IIS模式启动【由于此项目目标平台为linux,故不推荐使用IIS模式启动】
启动成功:
3.业务开发
-
abp插件,直接通过实体生成相应服务(一步到位)
**位置:**工具 >> 扩展和更新
-
安装后编写一个实体类,然后右击:
using Abp.Domain.Entities.Auditing; using System.ComponentModel.DataAnnotations.Schema; namespace AbpTwo.DomainEntities.Good { [Table("Goods")] public class Good : AuditedEntity<long> { /// <summary> /// 商品名 /// </summary> [Column(TypeName = "text")] public string Name { get; set; } /// <summary> /// 价格 /// </summary> public int Price { get; set; } } }
- 右击实体类
备注:第一次使用时,选择选项中的第一次使用选项
重新生成解决方案,会报很多错误
错误1:无效引用(using …)
解决方案:删除无效引用
错误2:未能找到相关文件
解决方法:按照abp的readm配置,然后在efcore下的DbContext.cs文件中新配置的onmodelcreating方法中加
base.OnModelCreating(modelBuilder);
-
阅读abp生成的Readme.md文件,配置相关文件,如下:
**注:**每个实体类生成的readme文件中有关变量会不同,下面只是一个参考的例子,具体修改根据readme文件
-
请打开AbpTwo.Application类库中AbpTwoApplicationModule.cs中的 PreInitialize 方法中:
//自定义AutoMapper类型映射 //如果没有这一段就把本所有代码复制上去 Configuration.Modules.AbpAutoMapper().Configurators.Add(configuration => { GoodDtoAutoMapper.CreateMappings(configuration); });
-
打开EntityFrameworkCore类库在 AbpTwoDbContext类文件中添加以下代码段,以实现将实体配置到数据库上下文中
public DbSet<Good> Goods { get; set; }
-
如果要使用 EntityFrameworkCore 中的 Fluent API 进行具有最高优先级的配置实体,可添加以下代码到方法
OnModelCreating
中
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new GoodCfg()); }
注意:手动给括号中的对象(如:GoodCfg())添加引用
给上述方法中添加一下代码,解决未找到相关配置文件的错误
base.OnModelCreating(modelBuilder);
注: 每次添加实体类使用abp插件后,都需要参考新生成的readme文件添加对应的代码在上面的位置(具体步骤如上)
-
扫码关注微信公众号:菜鸟阿都