Abp VNext模块开发
1.创建模块
1.1 第一种方式
abp new Mom.Frame -t module --no-ui -v 7.0.2 -dbms MySQL
这种方式会生成独立的Host,可以独立调试运行
1.2 第二种方式
直接在主项目下添加模块(在解决方案.sln目录下运行)
abp add-module Mom.Frame --new --add-to-solution-file -v 7.0.2 -dbms MySQL
2 添加模块项目到主项目
需要添加下面几层(第二种方式不用添加,已经自动添加了):
Application
Application.Contracts
Domain
Domain.Shared
EntityFrameworkCore
HttpApi
通过下面方式添加到主项目(在解决方案.sln目录下运行)
dotnet sln add module/Mom.Frame/src/Mom.Frame.HttpApi.Client/Mom.Frame.HttpApi.Client.csproj
3 主项目EF层实现接口
DBContext 实现模块DBContext接口IEnergyDbContext
OnModelCreating 方法重写builder.ConfigureEnergy()
public class ResourceDbContext : AbpDbContext<ResourceDbContext>, IResourceDbContext, IEnergyDbContext
{/* Add DbSet for each Aggregate Root here. Example:* public DbSet<Question> Questions { get; set; }*/public DbSet<StoreHouse> StoreHouses { get; set; }public DbSet<ProductionStation> ProductionStations { get; set; }public ResourceDbContext(DbContextOptions<ResourceDbContext> options): base(options){}protected override void OnModelCreating(ModelBuilder builder){base.OnModelCreating(builder);builder.ConfigureIdentity();builder.ConfigureResource();builder.ConfigureEnergy();}
}
4 主项目Host层配置接口
private void ConfigureConventionalControllers(){Configure<AbpAspNetCoreMvcOptions>(options =>{options.ConventionalControllers.Create(typeof(ResourceApplicationModule).Assembly);options.ConventionalControllers.Create(typeof(EnergyApplicationModule).Assembly);});}
5 主项目Host层数据迁移
在终端打开,执行迁移脚本
dotnet ef migrations add Init