SQLServer之数据库表转化为实体类【带注释】
1.在开发过程中,有时候需要将数据库表转化为实体类。手敲除了不方便,还容易出错。本着DRY+懒人原则,参考了一位老司机的博客【见底部】,并在其基础上进行了优化。【原先是不带注释的】
- DECLARE @TableName sysname = 'TableName';
- DECLARE @Result VARCHAR(MAX) = 'public class ' + @TableName + '
- {';
- SELECT @Result = @Result + CHAR(13) + ' ///<summary>' + CHAR(13)
- + ' ///' + CAST(desr AS NVARCHAR) + CHAR(13)
- + ' ///</summary>' + '
- public ' + ColumnType + NullableSign + ' ' + colname + ' ' + ' { get; set; }
- '
- FROM (SELECT column_id ColumnId,
- ISNULL(t.desctr, '') AS desr,
- col.name colname,
- 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 'string'
- 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
- FROM sys.columns col
- LEFT JOIN ( SELECT ISNULL(CAST(g.value AS VARCHAR), '') desctr ,
- g.minor_id AS minor_id
- FROM sys.extended_properties g
- WHERE g.major_id = OBJECT_ID(@TableName)
- ) t ON t.minor_id = col.column_id
- JOIN sys.types typ ON col.system_type_id = typ.system_type_id
- AND col.user_type_id = typ.user_type_id
- WHERE object_id = OBJECT_ID(@TableName)
- ) t
- ORDER BY ColumnId;
- SET @Result = @Result + '
- }';
- PRINT @Result;
最终效果如下:
参考链接:https://www.cnblogs.com/bayes/p/6206297.html
SQLServer之数据库表转化为实体类【带注释】的更多相关文章
- net core天马行空系列-可用于依赖注入的,数据库表和c#实体类互相转换的接口实现
1.前言 hi,大家好,我是三合.作为一名程序猿,日常开发中,我们在接到需求以后,一般都会先构思一个模型,然后根据模型写实体类,写完实体类后在数据库里建表,接着进行增删改查, 也有第二种情况,就是有些 ...
- GG_Model 类库与数据库表对应建立实体类
3.4.GG_Model 类库与数据库表对应建立实体类 我这里不教大家写代码,直接用TT模板自动生成,省去写代码的麻烦. A. 三个文件MysqlDbhelper.ttinclude .mysqlMa ...
- hibernate通过数据库表反向生成实体类
步骤一: window-->open Perspective-->MyEclipse Java Persistence 进行了上面的 操作后会出现一个视图DB Brower:MyEcl ...
- MyEclipse从数据库表反向生成实体类之Hibernate方式(反向工程)
一.打开Myeclipse Database Explorer 二.新建[New..] 三.选择数据库,添加驱动 四.测试连接 五.选中数据库中的表单击右键选择[Hibernate Rever..] ...
- 根据数据库表结构生成java类
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...
- JDBCUtils,根据当前MySQL数据库下面的表生成java实体类
自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵. 初始化配置: //驱动程序名//不固定,根据驱动 static String driver = & ...
- eclipse从数据库逆向生成Hibernate实体类
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...
- 由数据库表生成jpa实体工具
package cn.net.yto.aaa.dao.generator; /** * 由数据库表生成jpa实体工具 * * @author huike * Created by gf.liu on ...
- PowerDesigner16.5物理数据表生成C#实体类Model
原文:PowerDesigner16.5物理数据表生成C#实体类Model 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/da454122373/a ...
随机推荐
- TypeScript躬行记(3)——类
类是对对象的抽象,描述了对象的特征和行为,而对象就是类的实例.ES6引入了类的概念(相关内容可参考ES类和ES6类的继承两节),TypeScript在此基础上,不仅根据ES7等规范完善了类的语法,还添 ...
- SQL中Group By和having的用法
转自 ITGirl笑笑 一.GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX. ...
- 类型,值,变量知识总结(js)
文章目录: 一. 全局变量和局部变量分析 二. 从两个角度去理解变量作用域 三. 关于浮点数值计算产生舍入误差的问题分析 四. 理解js预解析 一. 全局变量和局部变量分析 在函数外部由var定义的变 ...
- Maven pom.xml 全配置(二)不常用配置
Maven pom.xml 全配置(二)不常用配置 这里贴出Maven pom.xml文件中使用率较少的配置参数,如果此篇文档中没有找到你想要的参数,移步Maven pom.xml 全配置(一)常用配 ...
- leetcode之缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0]输出: 3示例 2: 输入: [3,4,-1,1]输出: 2示例 3: 输入: [7,8,9,11,12] ...
- MySQL数据篇 (一)存储过程实现简单的数据修改及事务的使用
1.需求,手动给会员新增京币,并且添加分配日志,返回修改是否成功 CREATE DEFINER=`jszapi`@`%` PROCEDURE `p_allot_user_coin`(IN `_memb ...
- 部署flas到服务器:No module named flask
首先,你要先把nginx和uwsgi安装好(个人觉得这搭起来比较舒服),可以通过pip 或者源安装,具体方法在前面我有提到过,好了接下来我就讲讲我的踩坑经历与解决办法. 我先采用的pip insta ...
- linux bash变量作用域
linux bash变量作用域 一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的? shell会去$PATH环境变量定义的目录里去找这个命令.环境变量里一般包括/usr ...
- linux学习第一周
1. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 2. 安装Centos7.6操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图. 3. 配置环境变量,实现执行hi ...
- 【转】淘宝UED上关于chrome的transition闪烁问题的解决方案
最近在用BetterScroll实现一个功能的时候,在滚动区域中会有一个绝对定位的按钮,结果在IOS中出现了快速滚动,停止的时候,会先消失后显现的问题,所以查找了相关的文章,发现是transition ...