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

核心model类代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;
        }
    }

配置类

1
2
3
4
5
6
7
8
9
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);//忽略属性
    }
}

 

评论列表
发表评论
+ 关注