前言
前面1到12篇文章基于Abp VNext 和 vue-element-admin 前后端架构相关基础功能进行了尝试和论证,接下来开始业务相关的操作。
领域建模步骤:
1、新增领域对象 商品(属性:编号、名称、创建时间)
AoRuiDe.GasMonitoring.Domain 项目根目录新增 Goods/Good.cs
namespace AoRuiDe.GasMonitoring.Goods
{
//商品领域对象
public class Good : Entity<int>,IHasCreationTime
{
public virtual string Name { get; set; }
public DateTime CreationTime { get; set; }
}
}
2、将Good添加到数据库上下文:
AoRuiDe.GasMonitoring.EntityFrameworkCore 项目添加数据库表操作对象
namespace AoRuiDe.GasMonitoring.EntityFrameworkCore
{
[ConnectionStringName("Default")]
public class GasMonitoringDbContext : AbpDbContext<GasMonitoringDbContext>
{
public DbSet<AppUser> Users { get; set; }
public DbSet<Good> Good { get; set; }//新增商品表
}
}
3、添加自定义领域对象对应的映射到数据库表配置:
AoRuiDe.GasMonitoring.EntityFrameworkCore 项目中的GasMonitoringDbContextModelCreatingExtensions.cs
namespace AoRuiDe.GasMonitoring.EntityFrameworkCore
{
public static class GasMonitoringDbContextModelCreatingExtensions
{
public static void ConfigureGasMonitoring(this ModelBuilder builder)
{
Check.NotNull(builder, nameof(builder));
/* Configure your own tables/entities inside here */
builder.Entity<Good>(b =>
{
b.ToTable(GasMonitoringConsts.DbTablePrefix + "Good", GasMonitoringConsts.DbSchema);
b.ConfigureByConvention(); //auto configure for the base class props
});
}
}
}
注:必须在扩展类中添加 Good对应的数据库映射配置,因为在数据库迁移项目“AoRuiDe.GasMonitoring.EntityFrameworkCore.DbMigrations” 中调用了本ConfigureGasMonitoring(this ModelBuilder builder)用来生成自定义表对应的迁移文件。
4、生成数据库迁移文件,并更新表到数据:
- 进入迁移文件项目目录:cd src\AoRuiDe.GasMonitoring.EntityFrameworkCore.DbMigrations
- 生成数据库迁移文件:dotnet ef migrations add Initial_Migrations_02
- 更新实体表数据到数据库:dotnet ef database update
- 更多操作参考Abp VNext】实战入门(一):创建项目、MsSql/MySql配置、表结构数据迁移、启动项目 第六步
总结
AoRuiDe.GasMonitoring.EntityFrameworkCore.DbMigrations 通过 builder.ConfigureGasMonitoring(); 调用 AoRuiDe.GasMonitoring.EntityFrameworkCore 项目中领域实体到数据库映射配置 生成迁移文件 ;
也可以不做配置,直接在.DbMigrations项目中重复添加public DbSet Good { get; set; } 也可生成迁移文件(不建议重复操作)