SQL ERVER 表转化为C#实体(SQL 代码)
本文推出SqlServer表转化为实体的sql代码
在VS中有可以自带生成实体类的快捷操作,但是生成的代码比较杂乱,很多东西都是不需要的,一个一个去敲又很浪费时间,关键太无聊了
在闲暇之余写一份代码供大家学习,废话不多说,直接整干货:

1 DECLARE @TableName sysname = 'ObjeckBLL';-- 要生成实体类的表名
2 DECLARE @Result VARCHAR(MAX) = 'public class ' + @TableName + '
3 {';
4 SELECT @Result = @Result + '
5 /// <summary>
6 /// ' + CAST(t.Summary AS VARCHAR(MAX)) + '
7 /// </summary>
8 public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
9 '
10 FROM
11 (
12 SELECT REPLACE(col.name, ' ', '_') ColumnName,
13 col.column_id ColumnId,
14 CASE typ.name
15 WHEN 'bigint' THEN
16 'long'
17 WHEN 'binary' THEN
18 'byte[]'
19 WHEN 'bit' THEN
20 'bool'
21 WHEN 'char' THEN
22 'string'
23 WHEN 'date' THEN
24 'DateTime'
25 WHEN 'datetime' THEN
26 'DateTime'
27 WHEN 'datetime2' THEN
28 'DateTime'
29 WHEN 'datetimeoffset' THEN
30 'DateTimeOffset'
31 WHEN 'decimal' THEN
32 'decimal'
33 WHEN 'float' THEN
34 'float'
35 WHEN 'image' THEN
36 'byte[]'
37 WHEN 'int' THEN
38 'int'
39 WHEN 'money' THEN
40 'decimal'
41 WHEN 'nchar' THEN
42 'char'
43 WHEN 'ntext' THEN
44 'string'
45 WHEN 'numeric' THEN
46 'decimal'
47 WHEN 'nvarchar' THEN
48 'string'
49 WHEN 'real' THEN
50 'double'
51 WHEN 'smalldatetime' THEN
52 'DateTime'
53 WHEN 'smallint' THEN
54 'short'
55 WHEN 'smallmoney' THEN
56 'decimal'
57 WHEN 'text' THEN
58 'string'
59 WHEN 'time' THEN
60 'TimeSpan'
61 WHEN 'timestamp' THEN
62 'DateTime'
63 WHEN 'tinyint' THEN
64 'byte'
65 WHEN 'uniqueidentifier' THEN
66 'Guid'
67 WHEN 'varbinary' THEN
68 'byte[]'
69 WHEN 'varchar' THEN
70 'string'
71 ELSE
72 'UNKNOWN_' + typ.name
73 END ColumnType,
74 CASE
75 WHEN col.is_nullable = 1
76 AND typ.name IN ( 'bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal',
77 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint',
78 'smallmoney', 'time', 'tinyint', 'uniqueidentifier'
79 ) THEN
80 '?'
81 ELSE
82 ''
83 END NullableSign,
84 ISNULL(ep.value, col.name) AS Summary
85 FROM sys.columns col
86 JOIN sys.types typ
87 ON col.system_type_id = typ.system_type_id
88 AND col.user_type_id = typ.user_type_id
89 LEFT JOIN sys.extended_properties ep
90 ON ep.major_id = col.object_id
91 AND ep.minor_id = col.column_id
92 WHERE col.object_id = OBJECT_ID(@TableName)
93 ) t
94 ORDER BY ColumnId;
95 SET @Result = @Result + '
96 }';
97 PRINT @Result;
来看看效果:

有没有瞬间觉得很爽,排版清晰,结构清楚
今天的分享到此结束,有需要的可以关注留言讨论
能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识
SQL ERVER 表转化为C#实体(SQL 代码)的更多相关文章
- SQL查询表,表的所有字段名,SQL查询表,表的所有字段名
SQL查询表,表的所有字段名 2011-07-29 10:21:43| 分类: SQLServer | 标签:表 sql 字段 |举报 |字号 订阅 SQL查询表,表的所有字段名 SQ ...
- SQL添加表字段以及SQL查询表,表的所有字段名
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smalli ...
- SqlServer数据库表生成C# Model实体类SQL语句——补充
在sql语句最前边加上 use[数据库名] 原链接:https://www.cnblogs.com/jhli/p/11552105.html --[SQL骚操作]SqlServer数据库表生成C ...
- oracle SQL多表查询
SQL多表查询 1.集合理论 1.1 什么是集合 具有某种特定性质的事物的总体. 集合的特性:无序性.互异性.确定性. 一个集合可以小到从一个表中取出一行中的一列. 1 ro ...
- SQL多表联合查询
通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数 据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放 ...
- [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照
本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...
- SQL 创建表
SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句.CREATE TABLE语句用于创建用于存储数据的表.在创建表时,可以为列定义主键.惟一键和外键等完整性约 ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
- Oracle使用SQL传输表空间
源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的 ...
- SQL多表连接查询
SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...
随机推荐
- DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?
国内公司普遍不注重基础设施建设,这也是可以理解的.吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了.但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司的 ...
- ChatGPT研究报告:AIGC带来新一轮范式转移
以ChatGPT为代表的AIGC(人工智能生成内容)将成为新一轮范式转移的开始. 本文约4000字,目标是快速建立AIGC知识体系,含有大量的计算专业名词,建议阅读同时扩展搜索. 一.行业现状 1.概 ...
- Caused by: java.net.BindException: Address already in use: JVM_Bind(ActiveMq已经启动)
1.本地启动项目开启两个启动类出错. Error creating bean with name 'brokerService' defined in class path resource [com ...
- C# 当前进程是否有控制台窗口
WPF应用程序,在VS的项目属性中,可以设置输出类型: 那我们在代码中,如何判断应用的类型呢.有没有控制台?是否Windows应用程序还是控制台应用程序? Kernel32下函数GetConsoleW ...
- Redis之消息队列实现
文章目录 秒杀场景 采用消息队列实现 List实现消息队列 PubSub(发布订阅)实现消息队列 基于Stream实现消息队列 消费者组 实践 总结 秒杀问题是非常重要且比较难实现的,如果不进行架构的 ...
- intellij IDEA安装JDBC报错 No suitable driver found for jdbc:mysql://localhost:3306
项目场景: 本地尝试使用intellij IDEA加载JDBC连接MySQL,尝试实现增删改查,本来想做一个小Demo. 问题描述 报错: java.lang.ClassNotFoundExcepti ...
- Prism Sample 29-InvokeCommandAction
一下子跳到29,不是我的错,应该是新版本中去掉了一些过重的功能,案例就也去掉了,所以不是我的错. 本例是演示行为转命令的,事实上前面已经用到了. xmlns:i="http://schema ...
- 2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,
2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 . 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,3 ...
- 2021-09-26:搜索旋转排序数组。整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了
2021-09-26:搜索旋转排序数组.整数数组 nums 按升序排列,数组中的值 互不相同 .在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.lengt ...
- WSGI实现一个WEB服务