YiShaAdmin数据库设计:Entity类与表结构映射关系详解

YiShaAdmin数据库设计:Entity类与表结构映射关系详解

【免费下载链接】YiShaAdmin 基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观 【免费下载链接】YiShaAdmin 项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin

在基于.NET Core MVC的权限管理系统YiShaAdmin中,数据持久化层的设计直接影响系统性能与可维护性。本文将从实际应用角度出发,详解Entity类与数据库表结构的映射关系,帮助开发人员快速掌握数据模型设计规范。通过本文你将了解:数据注解与Fluent API两种映射方式的应用场景、Entity类与表结构的对应规则、以及如何通过代码生成工具实现映射关系的自动化维护。

映射关系基础架构

YiShaAdmin采用Entity Framework Core(实体框架核心)实现数据访问,通过约定优先的设计原则减少配置代码。系统将数据实体分为组织管理(OrganizationManage)和系统管理(SystemManage)两大模块,分别对应数据库中的业务表和系统表。

核心实现文件分布如下:

数据层架构

数据注解映射方式

表名映射

通过[Table]特性指定实体类对应的数据库表名,如用户实体映射到SysUser表:

[Table("SysUser")]
public class UserEntity : BaseExtensionEntity
{
    // 字段定义
}

字段映射

使用[Column]特性自定义字段名,[Description]添加字段说明,[NotMapped]标记非数据库字段:

[Description("用户名")]
public string UserName { get; set; }

[NotMapped]
public string DepartmentName { get; set; }

主键与基础字段

所有实体类继承自BaseExtensionEntity,该基类定义了系统级字段(如IdBaseCreateTime),无需在子类重复定义。主键默认采用Id字段,类型为bigint

Fluent API配置方式

当需要更复杂的映射规则时,系统在DbContext中通过Fluent API进行配置。MySqlDbContext采用反射机制自动注册所有带[Table]特性的实体:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    Assembly entityAssembly = Assembly.Load(new AssemblyName("YiSha.Entity"));
    IEnumerable<Type> typesToRegister = entityAssembly.GetTypes()
        .Where(p => !string.IsNullOrEmpty(p.GetCustomAttribute<TableAttribute>()?.Name));
    
    foreach (Type type in typesToRegister)
    {
        modelBuilder.Model.AddEntityType(type);
    }
    // 主键约定配置
    foreach (var entity in modelBuilder.Model.GetEntityTypes())
    {
        PrimaryKeyConvention.SetPrimaryKey(modelBuilder, entity.Name);
    }
}

映射关系对照表

以用户模块为例,展示Entity类与数据库表的核心映射关系:

Entity属性数据库字段类型说明
UserNameUserNamevarchar(20)用户名
PasswordPasswordvarchar(32)加密存储的密码
DepartmentIdDepartmentIdbigint外键关联部门表
UserStatusUserStatusint用户状态(0禁用 1启用)
[NotMapped] DepartmentName--非数据库字段,用于联表查询

完整表结构定义参见:mysql.sql

枚举类型映射

系统使用枚举类型规范状态字段取值,如任务状态枚举AutoJobStatusEnum对应数据库中的JobStatus字段:

// 枚举定义:YiSha.Enum/SystemManage/AutoJobStatusEnum.cs
public enum AutoJobStatusEnum
{
    [Description("禁用")]
    Disable = 0,
    [Description("启用")]
    Enable = 1
}

枚举值直接以整数形式存储在数据库,通过Description特性实现UI显示与存储值的分离。

映射关系维护最佳实践

  1. 命名规范:实体类采用XXXEntity命名,对应表名使用Sys_XXXXXX前缀
  2. 字段类型:字符串统一使用varchar而非nvarchar,减少存储空间
  3. 审计字段:所有表必须包含基础审计字段(创建时间、修改人等)
  4. 索引设计:外键字段(如DepartmentId)需添加索引提升查询性能

通过遵循以上规范,YiShaAdmin实现了实体模型与数据库结构的清晰映射,为系统提供了可靠的数据访问基础。开发人员可通过代码生成器快速创建符合规范的实体类与数据库脚本,进一步提升开发效率。

实体关系模型

【免费下载链接】YiShaAdmin 基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观 【免费下载链接】YiShaAdmin 项目地址: https://gitcode.com/GitHub_Trending/yi/YiShaAdmin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值