1.Domain层添加接口
public interface IAuditDomain
{
public int? AuditStatus { get; set; }
public Guid? AuditorId { get; set; }
public string Auditor { get; set; }
public DateTime? AuditTime { get; set; }
public string AuditBak { get; set; }
}
2.EFCore层添加扩展方法
public static class CloudMomAbpEntityTypeBuilderExtensions
{
public static void CloudMomConfigureByConvention(this EntityTypeBuilder b)
{
AbpEntityTypeBuilderExtensions.ConfigureByConvention(b);
TryConfigureAuditDomain(b);
}
public static void TryConfigureAuditDomain(this EntityTypeBuilder b)
{
if (b.Metadata.ClrType.IsAssignableTo<IAuditDomain>())
{
b.Property(nameof(IAuditDomain.AuditStatus))
.IsRequired(true)
.HasColumnName(nameof(IAuditDomain.AuditStatus));
b.Property(nameof(IAuditDomain.AuditorId))
.HasMaxLength(50)
.HasColumnName(nameof(IAuditDomain.AuditorId));
b.Property(nameof(IAuditDomain.Auditor))
.HasMaxLength(50)
.HasColumnName(nameof(IAuditDomain.Auditor));
b.Property(nameof(IAuditDomain.AuditTime))
.IsRequired(false)
.HasColumnName(nameof(IAuditDomain.AuditTime));
b.Property(nameof(IAuditDomain.AuditBak))
.IsRequired(false)
.HasMaxLength(1024)
.HasColumnName(nameof(IAuditDomain.AuditBak));
}
}
}
3.Domain层实体继承接口
public class MatchFreeze : AuditedAggregateRoot<Guid>, IMultiTenant, IAuditDomain
{
private MatchFreeze()
{
}
public MatchFreeze(Guid id) : base(id) { }
public Guid? TenantId { get; set; }
[Comment("流水号")]
public string SerialNo { get; set; }
[Comment("订单编号")]
public string OrderCode { get; set; }
[Comment("提交人")]
public string Commitor { get; set; }
[Comment("产品ID")]
public Guid ProductId { get; set; }
[Comment("产品编码")]
public string ProductCode { get; set; }
[Comment("产品名称")]
public string ProductName { get; set; }
[Comment("规格型号")]
public string Spec { get; set; }
[Comment("生产BOM版本")]
public string ModelBomVersion { get; set; }
[Comment("齐套数量")]
public int? MatchQuantity { get; set; }
[Comment("冻结数量")]
public int? FreezeQuantity { get; set; }
[Comment("冻结期至")]
public DateTime? FreezeDate { get; set; }
[Comment("提交状态")]
public int? CommitStatus { get; set; }
[Comment("冻结状态")]
public int? FreezeStatus { get; set; }
[Comment("备注")]
public string Bak { get; set; }
[Comment("创建人")]
public string Creator { get; set; }
[Comment("修改人")]
public string Modifier { get; set; }
public virtual ICollection<MatchFreezeDetail> MatchFreezeDetails { get; set; }
[Comment("审核状态")]
public int? AuditStatus { get; set; }
[Comment("审核人ID")]
public Guid? AuditorId { get; set; }
[Comment("审核人")]
public string Auditor { get; set; }
[Comment("审核时间")]
public DateTime? AuditTime { get; set; }
[Comment("审核备注")]
public string AuditBak { get; set; }
}
4.EFCore层生成实体中替换ConfigureByConvention方法为扩展方法CloudMomConfigureByConvention
builder.Entity<MatchFreeze>(b =>
{
b.ToTable(CloudMomSettings.DbPrmPrefix + "MatchFreeze",
CloudMomSettings.DbSchema);
b.CloudMomConfigureByConvention();
b.Property(e => e.SerialNo).IsRequired().HasComment("流水号").HasMaxLength(50);
b.Property(e => e.OrderCode).IsRequired().HasComment("订单编号").HasMaxLength(50);
b.Property(e => e.Commitor).HasComment("提交人").HasMaxLength(50);
b.Property(e => e.ProductId).IsRequired().HasComment("产品ID").HasMaxLength(16);
b.Property(e => e.ProductName).IsRequired().HasComment("产品名称").HasMaxLength(512);
b.Property(e => e.ProductCode).IsRequired().HasComment("产品编码").HasMaxLength(50);
b.Property(e => e.Spec).HasComment("规格型号").HasMaxLength(255);
b.Property(e => e.ModelBomVersion).IsRequired().HasComment("生产BOM版本").HasMaxLength(255);
b.Property(e => e.MatchQuantity).HasComment("齐套数量").HasMaxLength(10);
b.Property(e => e.FreezeQuantity).HasComment("冻结数量").HasMaxLength(10);
b.Property(e => e.FreezeDate).HasComment("冻结期至").HasMaxLength(27);
b.Property(e => e.CommitStatus).HasComment("提交状态").HasMaxLength(10);
b.Property(e => e.FreezeStatus).HasComment("冻结状态").HasMaxLength(10);
b.Property(e => e.AuditStatus).HasComment("审核状态").HasMaxLength(10);
b.Property(e => e.Bak).HasComment("备注").HasMaxLength(255);
b.Property(e => e.Creator).HasComment("创建人").HasMaxLength(60);
b.Property(e => e.Modifier).HasComment("修改人").HasMaxLength(60);
b.Property(e => e.Auditor).HasComment("审核人").HasMaxLength(50);
b.Property(e => e.AuditTime).HasComment("审核时间").HasMaxLength(19);
b.Property(e => e.AuditBak).HasComment("审核备注").HasMaxLength(255);
b.HasMany(p => p.MatchFreezeDetails).WithOne().HasForeignKey(p => p.MatchFreezeId);
});