一、一个系统中,最开始要设计的是用户表,先简单的设计如下图。
二、类的实体
/// <summary>/// /// </summary>/// <param name="id"></param>public User(long id){Id = id;Status = NormalLockedStatus.Normal;}/// <summary>/// 租户Id/// </summary>public virtual Guid? TenantId { get; set; }/// <summary>/// 登录账号/// </summary>public virtual string LoginName { get; set; }/// <summary>/// 昵称/姓名/// </summary>public virtual string Nickname { get; set; }/// <summary>/// 密码/// </summary>public virtual string Password { get; set; }/// <summary>/// 密码盐/// </summary>public virtual string PwdSalt { get; set; }/// <summary>/// 员工号/// </summary>public virtual string EmployeeID { get; set; }/// <summary>/// 账号类型: ( 1: 超级管理员 2:平台管理员,3:租户管理员)/// </summary>public virtual UserType UserType { get; set; }/// <summary>/// 备注/// </summary>public virtual string Memo { get; set; }/// <summary>/// 状态(1-正常,2-锁定)/// </summary>public virtual NormalLockedStatus Status { get; set; }
三、在EFcore项目中的AidenAdminDbContextModelCreatingExtensions文件下添加表的属性
public static void ConfigureAidenAdmin(this ModelBuilder builder){Check.NotNull(builder, nameof(builder));builder.Entity<User>(b =>{b.ConfigureFullAuditedAggregateRoot();b.ToTable(AidenAdminDbProperties.DbTablePrefix + "User", AidenAdminDbProperties.DbSchema);b.ConfigureConcurrencyStamp();b.ConfigureExtraProperties();b.ConfigureFullAuditedAggregateRoot();b.Property(x => x.Id).IsRequired();b.Property(x => x.UserType).IsRequired().HasDefaultValue(UserType.Tenant);b.Property(x => x.Nickname).IsRequired().HasMaxLength(32);b.Property(x => x.Password).IsRequired().HasMaxLength(64);b.Property(x => x.LoginName).HasMaxLength(64);b.Property(x => x.PwdSalt).HasMaxLength(64);b.HasIndex(q => q.LoginName);b.HasIndex(q => q.EmployeeId);});}
四、执行命令更新到数据库
add-migration 名称update-database