zoukankan      html  css  js  c++  java
  • SQL语句生成实体类

    --DictParam,表名称
    declare @TableName sysname = 'DictParam'
    declare @Result varchar(max) = '
    /// <summary>
    /// ' + @TableName +
    
    '
    /// </summary>
    public class ' + @TableName + '
    {'
    
    select @Result = @Result + '
    /// <summary>
    /// ' + CONVERT(NVARCHAR(500), ISNULL(ColName, '')) +
    
    '
    /// </summary>
    public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
    '
    from
    (
    SELECT
    replace(col.name, ' ', '_') ColumnName,
    column_id ColumnId,
    prop.value 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 '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
    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 prop ON col.object_id = prop.major_id AND col.column_id = prop.minor_id
    where object_id = object_id(@TableName)
    ) t
    --order by ColumnId
    
    set @Result = @Result + '
    }'
    
    print @Result
    

     注:用于生成实体类对象。如果写了字段说明自带属性注释  

    不生成注释

    declare @TableName sysname = 'DictPublic'
    declare @Result varchar(max) = '
    /// <summary>
    /// ' + @TableName +
    
    '
    /// </summary>
    public class ' + @TableName + '
    {'
    	select @Result = @Result + '
    public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }'
    from
    (
    SELECT
    replace(col.name, ' ', '_') ColumnName,
    column_id ColumnId,
    prop.value 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 '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
    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 prop ON col.object_id = prop.major_id AND col.column_id = prop.minor_id
    where object_id = object_id(@TableName)
    ) t
    --order by ColumnId
    
    set @Result = @Result + '
    }'
    
    print @Result
    

      

    博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
  • 相关阅读:
    Centos7安装JDK+部署Tomcat8
    blog开发day3+Django admin的简单使用
    基于form组件的注册 + 基于Ajax的注册
    form组件复习+文件上传
    登录验证+验证码
    Django认证系统--Auth模块
    中间件
    form组件
    Ajax
    自定义分页 Cookie Session和获得路径
  • 原文地址:https://www.cnblogs.com/YYkun/p/15589737.html
Copyright © 2011-2022 走看看