SQL转C#实体类

在线SQL建表语句转C#实体类工具,基于 ANTLR4 T-SQL 语法解析,自动识别主键、可空类型、数据类型映射,一键生成带 DataAnnotations 特性的 C# 实体类代码。支持自定义命名空间、PascalCase 命名、注释与 using 指令。

SQL行数
0
字段数
0
生成行数
0
生成次数
0
生成配置
SQL建表语句
生成的C#实体类
生成的 C# 实体类代码将显示在此处...
输入 CREATE TABLE 语句后点击「生成实体类」按钮

功能特性

ANTLR4 语法解析

基于 ANTLR4 T-SQL 语法树解析,精准识别 CREATE TABLE 语句的表名、字段名、数据类型、可空约束,远胜正则表达式方案。

主键自动识别

支持列级 PRIMARY KEY 与表级 PRIMARY KEY(含 CONSTRAINT 形式、复合主键)识别,自动为对应属性添加 [Key] 特性。

可空类型映射

自动识别 NOT NULL 约束,对可空值类型属性添加 ? 修饰符(如 int?、DateTime?),引用类型(string、byte[])保持原样。

完整类型映射

覆盖 SQL Server 全部常用类型:bigint、int、smallint、tinyint、decimal、float、bit、datetime2、uniqueidentifier、binary 等。

灵活配置选项

支持自定义命名空间、类名覆盖、是否生成特性/注释/using指令、属性名 PascalCase 转换,满足不同项目规范。

一键复制下载

生成结果支持一键复制到剪贴板,或直接下载为 .cs 文件,无缝接入 EF Core / EF6 项目。

使用说明

如何使用SQL转C#实体类工具?

  • 在 SQL 输入框粘贴或输入 CREATE TABLE 语句(支持带 [dbo].[表名] 的 SQL Server 方括号语法)。
  • 在「生成配置」中设置命名空间、类名(留空则使用表名),并按需勾选特性、注释、using、PascalCase 选项。
  • 点击「生成实体类」按钮,后端解析 SQL 语法树并生成 C# 代码,结果实时显示在下方输出区。
  • 点击「复制」将代码复制到剪贴板,或点击「下载.cs」保存为文件;点击「示例」可快速填充示例 SQL。
  • 将生成的实体类代码粘贴到你的 EF Core / EF6 项目中即可使用。

SQL类型与C#类型映射对照

  • 整数bigint→long、int→int、smallint→short、tinyint→byte。
  • 浮点decimal/numeric/money→decimal、float→double、real→float。
  • 字符char/varchar/nchar/nvarchar/text/ntext→string。
  • 日期时间datetime/datetime2/smalldatetime/date→DateTime、time→TimeSpan、datetimeoffset→DateTimeOffset。
  • 其他bit→bool、uniqueidentifier→Guid、binary/varbinary/image/timestamp→byte[]。

典型使用场景

  • EF Core 建模:从现有数据库脚本反向生成实体类,快速搭建 Code First 模型。
  • DDD 领域模型:根据数据库设计生成领域实体骨架,再补充业务方法与聚合根逻辑。
  • 数据库迁移:将旧系统的 CREATE TABLE 脚本转换为现代 C# 实体,便于迁移到 ORM。
  • 代码脚手架:在新建模块时快速生成实体类模板,避免手写重复的属性定义。
  • 教学演示:理解 SQL 数据类型与 C# 类型、DataAnnotations 特性的对应关系。

常见问题

支持哪些 SQL 方言?支持 MySQL / PostgreSQL 吗?
当前版本基于 ANTLR4 的 T-SQL(SQL Server)语法解析器,支持 SQL Server 的 CREATE TABLE 语句,包括方括号标识符 [dbo].[表名]、IDENTITY、CONSTRAINT PRIMARY KEY 等语法。MySQL / PostgreSQL 方言暂未支持,但大部分标准 CREATE TABLE 语法(不带反引号或特殊类型)也能正确解析。
主键是如何识别的?支持复合主键吗?
工具支持三种主键形式:1)列级声明 [Id] [int] PRIMARY KEY;2)表级声明 PRIMARY KEY (Id);3)带约束名的表级声明 CONSTRAINT PK_xxx PRIMARY KEY (Id)。识别为主键的属性会自动添加 [Key] 特性。复合主键(如 PRIMARY KEY (UserId, RoleId))同样支持,会为所有主键列添加 [Key]
可空类型是如何处理的?
工具根据 NOT NULL 约束判断可空性:声明了 NOT NULL 的字段为不可空,其余默认可空。对于值类型(int、DateTime、bool 等),可空时自动添加 ? 修饰符(如 int?DateTime?);对于引用类型(string、byte[]),可空时不加 ?,因为引用类型本身即可为 null。
PascalCase 命名转换有什么用?
开启后,数据库下划线或全小写字段名会转为 C# 规范的 PascalCase 属性名:如 user_nameUserNamecreated_atCreatedAtis_activeIsActive。这样生成的实体类更符合 C# 命名规范,配合 EF Core 的列名映射([Column("user_name")])即可同时满足数据库与代码规范。
生成的代码可以直接用于 EF Core 吗?
可以。生成的代码默认包含 using System.ComponentModel.DataAnnotationsSystem.ComponentModel.DataAnnotations.Schema 命名空间,以及 [Table][Key] 特性,可直接粘贴到 EF Core / EF6 项目中使用。如需更精细的列映射(如 [Column][MaxLength][Required]),可在此基础上手动补充,或关闭特性生成后使用 Fluent API 配置。
本工具是免费的吗?SQL 会被存储吗?
完全免费,无需注册登录。SQL 解析与代码生成均在后端内存中完成,请求结束后立即释放,不会持久化存储任何 SQL 内容。建议涉及敏感表结构时,可先脱敏(如修改真实表名)后再使用。