zoukankan      html  css  js  c++  java
  • 【SQL骚操作】SqlServer数据库表生成C# Model实体类SQL语句

    已知现有表T1

    想快速获取cs类结构

    /// <summary>
    ///  T1    
    /// </summary>
    public class T1
    {
        /// <summary>
        /// 主键    
        /// </summary>
        public int ID { get; set; }
    
        /// <summary>
        /// 姓名    
        /// </summary>
        public string NameLijhs { get; set; }
    
    }

    通过运行下面的sql即可,先配置表名。

    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

    效果如下:

    完美,copy到项目里即可。

  • 相关阅读:
    关于模式窗体的缓存问题的解决方案
    C# 读取网页
    C# 压缩文件
    C#实现反射调用动态加载的DLL文件中的方法
    在线程中修改窗体控件内容
    C# 启用双缓存,避免ListView控件加载数据时闪烁
    JBuilder2005破解方法
    C# combbox datatable 赋值
    今天感觉到秋凉了~
    烦人的流程图~~~
  • 原文地址:https://www.cnblogs.com/itjeff/p/15188361.html
Copyright © 2011-2022 走看看