2020/01/28, ASP.NET Core 3.1, VS2019
摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【4.1-网站数据库实体设计及映射配置】
文章目录
此分支项目代码
本章节介绍后台管理的网站数据库实体设计
需求分析
首先要实现的功能有用户登录、角色管理、日志记录
大概有四张表:用户表、密码表、角色表、日志表
日志表:
用户表:
密码表:
角色表:
好像博客园md不支持表格功能?所以只能截图展示,excel表格上传至项目docs文件夹中
字段设计说明
- 日志表主键Id是数据库自增的,也就是在向数据库插入日志时,不用管Id,往里写入就行
- 用户表、角色表的Id都是long类型的,也就是使用雪花算法生成的Id
- 密码表的主键是Account,UserId是用户表外键
- 用户表和角色表拥有StatusCode、Creator、CreateTime、Modifier、ModifyTime,标明该记录的状态、创建时间等信息
创建实体类
在MS.Entities
类库中添加Core文件夹,在Core文件夹中添加IEntity.cs
类:
using System;
namespace MS.Entities.Core
{
//没有Id主键的实体继承这个
public interface IEntity
{
}
//有Id主键的实体继承这个
public abstract class BaseEntity : IEntity
{
public long Id { get; set; }
public StatusCode StatusCode { get; set; }
public long? Creator { get; set; }
public DateTime? CreateTime { get; set; }
public long? Modifier { get; set; }
public DateTime? ModifyTime { get; set; }
}
}
在Core中新建StatusCode.cs
枚举:
using System.ComponentModel;
namespace MS.Entities.Core
{
public enum StatusCode
{
[Description("已删除")]
Deleted = -1,//软删除,已删除的无法恢复,无法看见,暂未使用
[Description("生效")]
Enable = 0,
[Description("失效")]
Disable = 1//失效的还可以改为生效
}
}
日志表
在MS.Entities
类库中添加Logrecord.cs
类:
using MS.Entities.Core;
using System;
namespace MS.Entities
{
public class Logrecord : IEntity
{
public int Id { get; set; }
public DateTime LogDate { get; set; }
public string LogLevel { get; set; }
public string Logger { get; set; }
public string Message { get; set; }
public string Exception { get; set; }
public string MachineName { get; set; }
public string MachineIp { get; set; }
public string NetRequestMethod { get; set; }
public string NetRequestUrl { get; set; }
public string NetUserIsauthenticated { get; set; }
public string NetUserAuthtype { get; set; }
public string NetUserIdentity { get; set; }
}
}
角色表
在MS.Entities
类库中添加Role.cs
类:
using MS.Entities.Core;
namespace MS.Entities
{
public class Role : BaseEntity
{
public string Name { get; set; }
public string DisplayName { get; set; }
public string Remark { get; set; }
}
}
用户表
在MS.Entities
类库中添加User.cs
类:
using MS.Entities.Core;
namespace MS.Entities
{
public class User : BaseEntity
{
public string Account { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public long RoleId { get; set; }
public Role Role { get; set; }
}
}
密码表
在MS.Entities
类库中添加UserLogin.cs
类:
using MS.Entities.Core;
using System;
namespace MS.Entities
{
public class UserLogin : IEntity
{
public long UserId { get; set; }
public string Account { get; set; }
public string HashedPassword { get; set; }
public DateTime? LastLoginTime { get; set; }
public int AccessFailedCount { get; set; }
public bool IsLocked { get; set; }
public DateTime? LockedTime { get; set; }
public User User { get; set; }
}
}
至此,实体类都已完成设计