本文推出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 代码)的更多相关文章

  1. SQL查询表,表的所有字段名,SQL查询表,表的所有字段名

    SQL查询表,表的所有字段名 2011-07-29 10:21:43|  分类: SQLServer |  标签:表  sql  字段   |举报 |字号 订阅   SQL查询表,表的所有字段名 SQ ...

  2. SQL添加表字段以及SQL查询表,表的所有字段名

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smalli ...

  3. SqlServer数据库表生成C# Model实体类SQL语句——补充

    在sql语句最前边加上  use[数据库名] 原链接:https://www.cnblogs.com/jhli/p/11552105.html   --[SQL骚操作]SqlServer数据库表生成C ...

  4. oracle SQL多表查询

    SQL多表查询 1.集合理论 1.1 什么是集合 具有某种特定性质的事物的总体. 集合的特性:无序性.互异性.确定性. 一个集合可以小到从一个表中取出一行中的一列.              1 ro ...

  5. SQL多表联合查询

    通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数 据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放 ...

  6. [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

    本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...

  7. SQL 创建表

    SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句.CREATE TABLE语句用于创建用于存储数据的表.在创建表时,可以为列定义主键.惟一键和外键等完整性约 ...

  8. SQL多表连接查询(详细实例)

    转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...

  9. Oracle使用SQL传输表空间

    源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的 ...

  10. SQL多表连接查询

    SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...

随机推荐

  1. python获取本地ip地址1

    import socket def get_host_ip(): """ 查询本机ip地址 return: ip """ try: s = ...

  2. super 与 this 关键字

    super与this用法相似: 1.普通的直接引用 2.形参与成员名字重名,用 this 来指代类本身,super指代父类 public class Students extends Person { ...

  3. vue事件监听

    v-on <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  4. 解决Godot使用VsCode编写C#代码,智能提示不见了[一问随笔]

    问题: 我的项目采用了godot + visual studio code + C#,有天突然换引擎,从Godot4.0.0升级到Godot4.0.2,visual studio code 突然不给代 ...

  5. #Python基础 pandas索引设置

    一:XMIND 二:设置索引 示例数据,假设我们有一个DataFrame对象,如下: import pandas as pd df = pd.DataFrame({ "name": ...

  6. 2021-12-22:回文子串。 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。

    2021-12-22:回文子串. 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一个序列. ...

  7. 2021-08-18:扰乱字符串。使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止。2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串

    2021-08-18:扰乱字符串.使用下面描述的算法可以扰乱字符串 s 得到字符串 t :1.如果字符串的长度为 1 ,算法停止.2.如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将 ...

  8. 2021-08-01:如果只给定一个二叉树前序遍历数组pre和中序遍历数组in,能否不重建树,而直接生成这个二叉树的后序数组并返回。已知二叉树中没有重复值。

    2021-08-01:如果只给定一个二叉树前序遍历数组pre和中序遍历数组in,能否不重建树,而直接生成这个二叉树的后序数组并返回.已知二叉树中没有重复值. 福大大 答案2021-08-01: 先序遍 ...

  9. 2021-11-06:3的幂。给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n ==

    2021-11-06:3的幂.给定一个整数,写一个函数来判断它是否是 3 的幂次方.如果是,返回 true :否则,返回 false .整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == ...

  10. 软硬件--智能穿戴常见BUG及原因分析

    软硬件--智能穿戴常见BUG及原因分析 1.手表有常亮功能(类似熄屏表盘),开启常亮暗屏状态下 按侧键,设备时间出现倒退现象:频率切换相关问题: 2.手表有常亮功能(类似熄屏表盘),开启常亮暗屏状态下 ...