EF Core实现充血模型
小白浏览:4782023-01-16 09:38:19本文累计收益:0我也要赚钱

核心model类代码

public record User
    {
        public int Id { get; init; }//只读属性
        public DateTime CreateDatetime { get; init; }//只读属性
        public string UserName { get; private set; }//私有设置,类外包不能修改
        public int Credit { get; private set; }////私有设置,类外包不能修改
        private string? passwordHash;//字段,需要映射到数据库
        private string? remark;//字段,数据库只读
        public string? Remark {
            get { return remark; }
        }
        public string? Tag { get; set; }//不映射到数据库
        private User() { }//给EFCore从数据库加载数据然后生成对象返回数据使用
        public User(string yhm)//给程序员使用
        {
            this.UserName = yhm;
            this.CreateDatetime = DateTime.Now;
            this.Credit = 10;
        }
        /// <summary>
        /// 修改用户名
        /// </summary>
        /// <param name="un"></param>
        public void ChangeUserName(string un){
            if (un.Length > 5) {
                Console.WriteLine("用户名长度不能大于5");
                return;
            }
            this.UserName = un;
        }
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="pwd"></param>
        public void ChangePassword(string pwd)
        {
            if (pwd.Length < 5)
            {
                Console.WriteLine("密码长度不能小于5");
                return;
            }
            this.passwordHash = pwd;
        }
    }

配置类

    internal class UserConfig : IEntityTypeConfiguration<User>
    {
        public void Configure(EntityTypeBuilder<User> builder)
        {
            builder.Property("passwordHash");//字段映射到数据库
            builder.Property(e => e.Remark).HasField("remark");//只读属性
            builder.Ignore(e=>e.Tag);//忽略属性
        }
    }

 

评论列表
发表评论
+ 关注