当前位置: 首页 > news >正文

EF Core 实体字段类型与 MySQL 数据库中常见字段类型的映射关系列表

以下是ai工具帮助整理的EF Core 实体字段类型与 MySQL 数据库中常见字段类型的映射关系列表。这个映射基于使用的 EF Core MySQL Provider ( Pomelo.EntityFrameworkCore.MySql

请注意:

  • M 在 INT(M) 等类型中通常表示显示宽度,不影响存储大小或数值范围(除非配合 ZEROFILL 使用),因此在映射时主要关注基本类型名称和是否有符号。
  • 空安全 (Nullable) C# 类型(例如 int?DateTime?)会映射到对应的 MySQL 类型,但数据库列会允许 NULL 值。非空 C# 类型(例如 intDateTime)则映射到不允许 NULL 值的 MySQL 列(除非显式配置为允许)。
  • 以下列表涵盖了大部分常用类型,但可能不是全部。

EF Core (C#) -> MySQL 数据类型映射

EF Core (C#) 类型常用 MySQL 类型备注 / 注意事项
boolTINYINT(1) 或 BOOLMySQL 没有独立的布尔类型,通常映射为 TINYINT(1) (0=false, 1=true)。BOOL 是 TINYINT(1) 的别名。
byteTINYINT UNSIGNED无符号 8 位整数,范围 0-255。
sbyteTINYINT有符号 8 位整数,范围 -128 到 127。
shortSMALLINT有符号 16 位整数。
ushortSMALLINT UNSIGNED无符号 16 位整数。
intINT 或 INTEGER有符号 32 位整数。
uintINT UNSIGNED 或 INTEGER UNSIGNED无符号 32 位整数。
longBIGINT有符号 64 位整数。
ulongBIGINT UNSIGNED无符号 64 位整数。
floatFLOAT单精度浮点数。
doubleDOUBLE 或 REAL双精度浮点数。
decimalDECIMAL精确小数类型。通常需要指定精度和标度,例如 DECIMAL(18, 2)。EF Core 默认可能会使用一个较大的默认值,但最好显式配置。
charCHAR(1)单个字符。
stringVARCHAR(N) 或 LONGTEXT可变长度字符串。默认映射取决于 EF Core 的配置,通常是 VARCHAR 带一个最大长度。如果未指定最大长度或长度非常大,可能映射到 TEXTMEDIUMTEXTLONGTEXT
DateTimeDATETIME存储日期和时间。默认情况下,EF Core 不会存储时区信息。请注意 MySQL DATETIME 范围。
DateTimeOffsetDATETIME 或 TIMESTAMP注意: MySQL 的 DATETIME 和 TIMESTAMP 不直接支持时区偏移量。Provider 通常会映射到 DATETIME,但这可能导致时区问题。某些 Provider 或配置下可能映射到 TIMESTAMP (存储 UTC 但有范围限制) 或需要额外处理。这是一种复杂的映射。
DateOnly (仅 .NET 6 及以上)DATE仅存储日期部分。
TimeOnly (仅 .NET 6 及以上)TIME仅存储时间部分。
TimeSpanTIME 或 BIGINT映射到 TIME (存储时间间隔) 或 BIGINT (存储Ticks)。取决于 Provider 的默认行为或你的配置。通常映射到 TIME
byte[]VARBINARY(N) 或 BLOB可变长度二进制数据。默认映射取决于 EF Core 的配置,通常是 VARBINARY 带最大长度。如果长度很大或未指定,可能映射到 TINYBLOBBLOBMEDIUMBLOBLONGBLOB
GuidBINARY(16) 或 VARCHAR(36)存储 GUID。BINARY(16) 更节省空间和索引效率更高,但存储和读取时需要注意字节序转换。VARCHAR(36) 更易读,但效率较低。Pomelo provider 默认通常是 CHAR(36)。可以配置为 BINARY(16)
enumINT (或其基础类型)EF Core 默认会将 C# 枚举映射到其基础整数类型(如 int 或 byte),然后该整数类型再映射到对应的 MySQL 整数类型。MySQL 的 ENUM 类型需要自定义 Value Converter。
JsonDocumentJsonElement 或自定义对象 (需配置)JSON需要使用特定的 Value Converter 或配置才能将 C# JSON 类型或对象映射到 MySQL 的 JSON 类型。

重要提示:

  • Nullable Types: 任何 C# 值类型 (intboolDateTime 等) 后面的 ? (int?bool?DateTime?) 表示它是可空的。在数据库中,这对应于该列允许存储 NULL 值。引用类型 (stringbyte[]) 默认就是可空的,unless configured otherwise.
  • Provider: 上述映射基于常见的 EF Core MySQL Provider (如 Pomelo.EntityFrameworkCore.MySql)。不同的 Provider 或 Provider 版本可能会有细微差别。
  • Fluent API / Data Annotations: 你可以使用 EF Core 的 Fluent API 或 Data Annotations 来覆盖默认的映射行为,例如指定字符串的最大长度,DECIMAL 的精度和标度,或者将 Guid 映射到 BINARY(16)

-------------------------传统分割线--------------------------------------------------------------

相关文章:

  • 佳博票据和标签打印:Web网页端与打印机通信 | iOS
  • C++进阶----多态
  • Python笔记:VS2013编译Python-3.5.10
  • 【EDA】EDA中聚类(Clustering)和划分(Partitioning)的应用场景
  • 潮了 低配电脑6G显存生成60秒AI视频 本地部署/一键包/云算力部署/批量生成
  • 第3.2节 Android应用调用链路分析
  • 数字化技术的五个环节:大数据、云计算、人工智能、区块链、移动互联网
  • 深入理解指针(4)
  • 机器学习的基本概念
  • 面向智能家居安全的异常行为识别与应急联动关键技术研究与系统实现(源码+论文+部署讲解等)
  • 第二章 信息技术发展(2.1 信息技术及其发展)
  • 高频面试题:如何保证数据库和es数据一致性
  • 11.ArkUI Tabs的介绍和使用
  • 跟我学C++中级篇——处理对象的复制
  • 【科研绘图系列】R语言绘制区间点图(dot plot)
  • Vue前端学习笔记
  • 什么是测试驱动开发(TDD)?
  • Safety Estimands与Efficacy Estimands的差异剖析
  • UR5 UR5e机器人URDF文件
  • ai聊天流式响应,阻塞式和流式响应 nginx遇到的坑
  • 文庙印象:一周城市生活
  • 我国首次实现地月距离尺度卫星激光测距
  • 从息屏24小时到息屏1小时,姚明在深圳开启落地试点
  • 2025全球智慧城市指数排名揭晓,阿布扎比跃升至第五位
  • 张文宏团队公布广谱抗猴痘药物研发进展,将进入临床审批阶段
  • 驯服象牙塔:美国政府对大学的战争是一场善恶对抗吗