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_name→UserName、created_at→CreatedAt、is_active→IsActive。这样生成的实体类更符合 C# 命名规范,配合 EF Core 的列名映射([Column("user_name")])即可同时满足数据库与代码规范。
生成的代码可以直接用于 EF Core 吗?
可以。生成的代码默认包含
using System.ComponentModel.DataAnnotations 和 System.ComponentModel.DataAnnotations.Schema 命名空间,以及 [Table]、[Key] 特性,可直接粘贴到 EF Core / EF6 项目中使用。如需更精细的列映射(如 [Column]、[MaxLength]、[Required]),可在此基础上手动补充,或关闭特性生成后使用 Fluent API 配置。
本工具是免费的吗?SQL 会被存储吗?
完全免费,无需注册登录。SQL 解析与代码生成均在后端内存中完成,请求结束后立即释放,不会持久化存储任何 SQL 内容。建议涉及敏感表结构时,可先脱敏(如修改真实表名)后再使用。