zoukankan      html  css  js  c++  java
  • SQLServer 根据表名生成实体类

    //来源:https://www.cnblogs.com/jhli/p/11552105.html  

    declare @TableName sysname = 'T1'
    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

  • 相关阅读:
    Thinkphp绕过宝塔getshell
    论一句话过WAF
    JDK源码那些事儿之传说中的AQS-独占锁
    JDK源码那些事儿之传说中的AQS-概览
    JDK源码那些事儿之LockSupport
    JDK源码那些事儿之万物之源Object
    JDK源码那些事儿之神秘的ThreadLocal下篇
    JDK源码那些事儿之神秘的ThreadLocal上篇
    JDK源码那些事儿之FutureTask
    JDK源码那些事儿之ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/13158039.html
Copyright © 2011-2022 走看看