本文推出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. pysimplegui之窗口大小,位子,主题等属性修改

    重点 1finalize()或Window参数finalize=True 调用以强制窗口通过初始化的最后阶段.这将导致 tkinter 资源被分配,以便它们可以被修改.这也会导致您的窗口出现.如果您不 ...

  2. [软件工程]TO B型IT软件企业在工程管理角度所存在的诸多问题

    组织架构与分工? 各子组织的职责.边界是否明确? (安装.升级)部署规范? 必须有部署文档. 各个模块/组件部署在哪台服务器?哪个路径下? 一切非正式启用的任务.文件(夹).安装资料必须依据实际用途以 ...

  3. LeeCode 319周赛复盘

    T1: 温度转换 思路:模拟 public double[] convertTemperature(double celsius) { return new double[]{celsius + 27 ...

  4. 关于取消DevTools listening on ws://127.0.0.1…提示的方法

    Python代码写好之后,通过任务计划程序定期执行.py文件,但总会有命令窗口,虽然不影响程序执行,但每次需要手动叉掉比较烦.于是我网上搜索了一些方法. 网上的方法并没有直接解决我的问题,但我借助搜索 ...

  5. C++核心知识回顾(自定义数据类型)

    复习C++ 类 自定义数据类型最灵活的方式就是使用C++的类结构 现在定义一个货币类型Currency: enum signType{PLUS,MINUS}; class Currency { pub ...

  6. vue 项目全局修改element-ui的样式/主题颜色

    一,安装sass 1 npm i sass sass-loader --save 二,安装element主题生成工具 // 全局安装npm i element-theme --save // 安装主体 ...

  7. MQTT.fx的安装和使用

    一.下载和安装 MQTT.fx支持Windows/Linux/Mac,附下载地址:http://www.jensd.de/apps/mqttfx/,下载完成之后双击进行安装. 二.配置使用 打开软件, ...

  8. 突破tls/ja3新轮子

    我之前的文章介绍了SSL指纹识别 https://mp.weixin.qq.com/s/BvotXrFXwYvGWpqHKoj3uQ 很多人来问我BYPass的方法 主流的BYPASS方法有两大类: ...

  9. 【Docker】容器管理

    一.容器生命周期及启动过程 1.容器生命周期 2.容器启动过程 二.容器管理命令 Usage: docker [OPTIONS] COMMAND A self-sufficient runtime f ...

  10. 2023-03-08:x265的视频编码器,不用ffmpeg,用libx265.dll也行。请用go语言调用libx265.dll,将yuv文件编码成h265文件。

    2023-03-08:x265的视频编码器,不用ffmpeg,用libx265.dll也行.请用go语言调用libx265.dll,将yuv文件编码成h265文件. 答案2023-03-08: 使用 ...