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到项目里即可。

    参考自:

    利用SQL生成模型实体类

  • 相关阅读:
    Pandas高级教程之:category数据类型
    Pandas高级教程之:处理缺失数据
    Pandas高级教程之:处理text数据
    密码学系列之:blowfish对称密钥分组算法
    架构之:数据流架构
    ES6中的新特性:Iterables和iterators
    密码学系列之:feistel cipher
    Pandas高级教程之:Dataframe的重排和旋转
    Electron实用技巧-electron-builder中用户协议(license)的使用及多语言支持
    Electron实用技巧-开机启动时隐藏主窗口,只显示系统托盘
  • 原文地址:https://www.cnblogs.com/jhli/p/11552105.html
Copyright © 2011-2022 走看看