EFcore的实体类配置

2024-03-21 22:28
文章标签 配置 efcore 实体类

本文主要是介绍EFcore的实体类配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 约定配置

约定大于配置,框架默认了许多实体类配置的规则,在约定规则不满足要求时,可以显示地定义规则
1 数据库表明在不指定的情况下,默认使用的是数据库上下文类【DBContext】中DbSet 的属性名;
2 数据库表列的名字默认使用的是实体类属性的名字;列的数据类型采用与实体类属性类型相兼容的类型;
3 数据库列的可空性取决于对应实体属性的可空性;
4 实体类的属性为Id时,在数据库中对应的是主键,若属性类型为short、int、long类型时,则在数据库中默认是自增的

2 显示定义模型类配置规则

该文章使用的是MySQL的数据库,这里使用到了模型驱动开发的模式【现有实体类,后有数据库表。需要使用到迁移指令的使用,本篇文章的重点不是迁移指令的使用,所以忽略该内容】

2.1 Fluent API

使用框架定义的方法去配置模型类与数据库表的关系,通常在实现了IEntityTypeConfiguration《T》的Configure(EntityTypeBuilder builder)方法中去使用FluentAPI的方式去配置

   public  class Book{/// <summary>/// 书籍ID/// </summary>public long Id { get; set; }/// <summary>/// 标题/// </summary>public string? Title { get; set; }/// <summary>/// 发布时间/// </summary>public DateTime PublishTime { get; set; }/// <summary>/// 价格/// </summary>public double Price { get; set; }/// <summary>/// 作者名称/// </summary>public string ?AuthorName { get; set; }/// <summary>/// 描述/// </summary>public string Desc { get; set; }}
    internal class BookConfiguration : IEntityTypeConfiguration<Book>{public void Configure(EntityTypeBuilder<Book> builder){//Book类对应数据库中的tb_book表builder.ToTable<Book>("t_books");//使用Fluent API的方式,显示地去配置类模型与数据库表的关系//HasColumnName指定数据库中列的名字builder.Property(e => e.Id).HasColumnName("id").IsRequired();//HasColumnType指定数据库中列的数据类型builder.Property(e => e.AuthorName).HasColumnType("varchar(100)").HasColumnName("author_name");//HasMaxLength 设定列的最大长度builder.Property(e => e.Title).HasColumnName("title").HasMaxLength(200);builder.Property(e => e.Price).HasColumnName("price");builder.Property(e => e.PublishTime).HasColumnName("publish_time");//实体类的属性默认全部会映射到数据库表中,可以使用Ignore去忽略制定的属性builder.Ignore(e=>e.Desc);}}

使用迁移指令后Update-database,将同步更新数据库中表信息。数据结构如下
在这里插入图片描述

2.2 Data Annotation

使用特性 【 A n n o t a t i o n 】 \textcolor{red}{【Annotation】} Annotation的方式去配置模型类与数据库表的映射关系

    //Table 指定表名称[Table("t_students")]internal class Student{public int Id { get; set; }//MaxLength 指定栏位长度 Required 指定列值必填[MaxLength(100)][Required]public string Name { get; set; }public int  Age { get; set; }}

使用迁移指令后Update-database,将同步更新数据库中表信息。数据结构如下
在这里插入图片描述

2.3 如何选用自定义配置规则

Data Annotation 相较于使用FluentAPI的方式更为简洁,只需要使用特性标注即可,不需要单独的写配置类,不过FluentAPI更为强大,能够完全替代Data Annotation ,但是使用特性的方式则无法完全取代FluentAPI。微软官方默认推荐使用FluentAPI去配置模型类,不过两者是可以同时混用的,可以在Data Annotation无法实现的情况下使用FluentAPI去配置模型类。

这篇关于EFcore的实体类配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834002

相关文章

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数