ABP vNext继承实体接口,自动生成实体字段到数据库

1.Domain层添加接口

    /// <summary>
    /// 审核接口
    /// </summary>
    public interface IAuditDomain
    {
        /// <summary>
        /// 审核状态  0 未审核  1审核通过 2审核驳回
        /// </summary>
        public int? AuditStatus { get; set; }

        /// <summary>
        /// 审核人Id
        /// </summary>
        public Guid? AuditorId { get; set; }
        /// <summary>
        /// 审核人名称
        /// </summary>
        public string Auditor { get; set; }

        /// <summary>
        /// 审核时间
        /// </summary>
        public DateTime? AuditTime { get; set; }

        /// <summary>
        /// 审核备注
        /// </summary>
        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层实体继承接口

    /// <summary>
    /// 齐套冻结主表
    /// </summary>
    public class MatchFreeze : AuditedAggregateRoot<Guid>, IMultiTenant, IAuditDomain
    {
        private MatchFreeze()
        {

        }

        public MatchFreeze(Guid id) : base(id) { }

        /// <summary>
        /// 租户Id
        /// </summary>
        public Guid? TenantId { get; set; }

        /// <summary>
        /// 流水号
        /// </summary>
        [Comment("流水号")]
        public string SerialNo { get; set; }

        /// <summary>
        /// 订单编号
        /// </summary>
        [Comment("订单编号")]
        public string OrderCode { get; set; }

        /// <summary>
        /// 提交人
        /// </summary>
        [Comment("提交人")]
        public string Commitor { get; set; }

        /// <summary>
        /// 产品ID
        /// </summary>
        [Comment("产品ID")]
        public Guid ProductId { get; set; }

        /// <summary>
        /// 产品编码
        /// </summary>
        [Comment("产品编码")]
        public string ProductCode { get; set; }

        /// <summary>
        /// 产品名称
        /// </summary>
        [Comment("产品名称")]
        public string ProductName { get; set; }

        /// <summary>
        /// 规格型号
        /// </summary>
        [Comment("规格型号")]
        public string Spec { get; set; }

        /// <summary>
        /// 生产BOM版本
        /// </summary>
        [Comment("生产BOM版本")]
        public string ModelBomVersion { get; set; }

        /// <summary>
        /// 齐套数量
        /// </summary>
        [Comment("齐套数量")]
        public int? MatchQuantity { get; set; }

        /// <summary>
        /// 冻结数量
        /// </summary>
        [Comment("冻结数量")]
        public int? FreezeQuantity { get; set; }

        /// <summary>
        /// 冻结期至
        /// </summary>
        [Comment("冻结期至")]
        public DateTime? FreezeDate { get; set; }

        /// <summary>
        /// 提交状态
        /// </summary>
        [Comment("提交状态")]
        public int? CommitStatus { get; set; }

        /// <summary>
        /// 冻结状态
        /// </summary>
        [Comment("冻结状态")]
        public int? FreezeStatus { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [Comment("备注")]
        public string Bak { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        [Comment("创建人")]
        public string Creator { get; set; }

        /// <summary>
        /// 修改人
        /// </summary>
        [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.ConfigureByConvention(); //auto configure for the base class props
                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);
            });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值