首页 > 数据库 >SQL ERVER 表转化为C#实体(SQL 代码)

SQL ERVER 表转化为C#实体(SQL 代码)

时间:2023-05-20 22:14:33浏览次数:30  
标签:ERVER C# decimal WHEN col Result SQL typ id

本文推出SqlServer表转化为实体的sql代码

在VS中有可以自带生成实体类的快捷操作,但是生成的代码比较杂乱,很多东西都是不需要的,一个一个去敲又很浪费时间,关键太无聊了

在闲暇之余写一份代码供大家学习,废话不多说,直接整干货:

DECLARE @TableName sysname = '[dbo].[Orders]';-- 要生成实体类的表名
DECLARE @Result VARCHAR(MAX) = 'public class ' + @TableName + '
{';
SELECT @Result = @Result + '
    /// <summary>
    /// '        + CAST(t.Summary AS VARCHAR(MAX)) + '
    /// </summary>
    public '     + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
FROM
(
    SELECT REPLACE(col.name, ' ', '_') ColumnName,
           col.column_id ColumnId,
           CASE typ.name
               WHEN 'bigint' THEN
                   'long'
               WHEN 'binary' THEN
                   'byte[]'
               WHEN 'bit' THEN
                   'bool'
               WHEN 'char' THEN
                   'string'
               WHEN 'date' THEN
                   'DateTime'
               WHEN 'datetime' THEN
                   'DateTime'
               WHEN 'datetime2' THEN
                   'DateTime'
               WHEN 'datetimeoffset' THEN
                   'DateTimeOffset'
               WHEN 'decimal' THEN
                   'decimal'
               WHEN 'float' THEN
                   'float'
               WHEN 'image' THEN
                   'byte[]'
               WHEN 'int' THEN
                   'int'
               WHEN 'money' THEN
                   'decimal'
               WHEN 'nchar' THEN
                   'char'
               WHEN 'ntext' THEN
                   'string'
               WHEN 'numeric' THEN
                   'decimal'
               WHEN 'nvarchar' THEN
                   'string'
               WHEN 'real' THEN
                   'double'
               WHEN 'smalldatetime' THEN
                   'DateTime'
               WHEN 'smallint' THEN
                   'short'
               WHEN 'smallmoney' THEN
                   'decimal'
               WHEN 'text' THEN
                   'string'
               WHEN 'time' THEN
                   'TimeSpan'
               WHEN 'timestamp' THEN
                   'DateTime'
               WHEN 'tinyint' THEN
                   'byte'
               WHEN 'uniqueidentifier' THEN
                   'Guid'
               WHEN 'varbinary' THEN
                   'byte[]'
               WHEN 'varchar' THEN
                   'string'
               ELSE
                   'UNKNOWN_' + typ.name
           END ColumnType,
           CASE
               WHEN col.is_nullable = 1
                    AND typ.name IN ( 'bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal',
                                      'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint',
                                      'smallmoney', 'time', 'tinyint', 'uniqueidentifier'
                                    ) THEN
                   '?'
               ELSE
                   ''
           END NullableSign,
           ISNULL(ep.value, col.name) AS Summary
    FROM sys.columns col
        JOIN sys.types typ
            ON col.system_type_id = typ.system_type_id
               AND col.user_type_id = typ.user_type_id
        LEFT JOIN sys.extended_properties ep
            ON ep.major_id = col.object_id
               AND ep.minor_id = col.column_id
    WHERE col.object_id = OBJECT_ID(@TableName)
) t
ORDER BY ColumnId;
SET @Result = @Result + '
}';
PRINT @Result;

  

来看看效果:

 

 有没有瞬间觉得很爽,排版清晰,结构清楚

今天的分享到此结束,有需要的可以关注留言讨论

能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识

标签:ERVER,C#,decimal,WHEN,col,Result,SQL,typ,id
From: https://www.cnblogs.com/51net/p/17417886.html

相关文章

  • RocketMQ
    RocketMQ背景是阿里巴巴,经历双11考验,Java语言编写,非常好完整体系1、支持事务消息(实现解决分页式事务的问题)2、支持高并发顺序消息处理(采用内存队列+多线程处理)3、消费者支持tag过滤,减少我们带宽传输RocketMQ关键核心名称:NameServer:存放生产者、消费者、topic信息。去中心......
  • c语言趣味编程
    三色球问题1#include<iostream>2usingnamespacestd;3intmain()4{5intcount=0;6for(inti=0;i<=3;i++)7{8for(intj=0;j<=3;j++)9{10for(intk=0;k<=6;k++)11{12......
  • CSS基础知识笔记
    CSS(CascadingStyleSheets)指层叠样式表,是一种描述如何显示HTML元素的语言。参考教程:https://www.w3school.com.cn/css/index.aspCSS语法CSS规则集(rule-set)由选择器和声明块组成:CSS选择器元素选择器p{text-align:center;color:red;}id选择器注意:i......
  • Apache maven 安装与配置 (Mac)
    一、准备文件Maven3.5.4version下载 https://maven.apache.org/download.cgi  二、安装与配置(1)安装将下载好的文件解压到/usr/local目录下,如果找不到/usr/local目录,可以打开苹果访达,按住shift+command+G,则会弹出一个搜索框,在里面输入/usr/local即可出现。也可以使......
  • MySQL索引优化
    1.索引是啥?简单来说是可以快速查找数据的数据结构。数据结构就是存储数据的结构,例如数组,链表...在数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用指向表中是数据,这些数据结构就是索引,它让我们可以用算法来查找数据。假设有个user表,通过name字段找李白,没有......
  • 图解LeetCode——19. 删除链表的倒数第 N 个结点
    一、题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。二、示例2.1>示例1:【输入】head=[1,2,3,4,5],n=2【输出】[1,2,3,5]2.2>示例2:【输入】head=[1],n=1【输出】[]2.3>示例3:【输入】head=[1,2],n=1【输出】[1]提示:链......
  • #yyds干货盘点# LeetCode程序员面试金典:有序链表转换二叉搜索树
    题目:给定一个单链表的头节点 head ,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过1。 示例1:输入:head=[-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:一个可能的答案是[0,-3,9,-1......
  • C# 版本 最少金币问题 动态规划 算法
    @[TOC](C#版本最少金币问题动态规划算法)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">题目这是一道经典算法题,题目如下:题目:有面值为2元,5元,7元面值的硬币,买一本27元的书,用最少的硬币组合刚好付清,问题1:需要几枚硬币。问题2:这几枚硬币都是什么?<......
  • #yyds干货盘点# LeetCode程序员面试金典:比较版本号
    1.简述:给你两个版本号version1和version2,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个'.'连接。每个修订号由多位数字组成,可能包含前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此......
  • C/C++程序设计课设题[2023-05-20]
    C/C++程序设计课设题[2023-05-20]ATM仿真系统-薛景背单词-叶水仙-理科实验班电信优惠套餐推荐系统的设计与实现-朱立华-通信工程多媒体文件管理及检索系统-刘林峰-广播电视工程公交路线自动化选择系统实现-张勤-测控技术与仪器基于朋友圈的商品推荐-汪云云-自动化基于数据......