zoukankan      html  css  js  c++  java
  • Generate class from database table

    declare @TableName sysname = 'TableName'
    declare @Result varchar(max) = 'public class ' + @TableName + '
    {'
    
    select @Result = @Result + '
        public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
    '
    from
    (
        select 
            replace(col.name, ' ', '_') ColumnName,
            column_id ColumnId,
            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 'double'
                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 'float'
                when 'smalldatetime' then 'DateTime'
                when 'smallint' then 'short'
                when 'smallmoney' then 'decimal'
                when 'text' then 'string'
                when 'time' then 'TimeSpan'
                when 'timestamp' then 'long'
                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
        where object_id = object_id(@TableName)
    ) t
    order by ColumnId
    
    set @Result = @Result  + '
    }'
    
    print @Result

    https://stackoverflow.com/questions/5873170/generate-class-from-database-table


    If you want to use Entity Framework you should consider to use Database First approach.

    Other simple and fast way to import a Sql Server scheme to a class in VS is this:

    1. Make a select as json query:

      SELECT * FROM Approval FOR JSON AUTO

    2. Copy one row from the result in your clipboard:

      [{"Id":1,"FormId":10,"DesignationId":100,"CreatedOn":"2000-01-01T00:00:00"},{"Id":2,"FormId":20,"DesignationId":200,"CreatedOn":"2000-01-01T00:00:00"}... ]

    3. Paste in Visual Studio: Edit-> Paste Special -> Paste Json As Classes



  • 相关阅读:
    css知多少(10)——display
    css知多少(9)——float下篇
    centos-lynx
    linux-redis
    springMVC robots.txt 处理
    .net core
    docker快速入门+搭建javaweb环境
    maven+spring+springMVC+mybatis+dubbox
    微信群之社群经济的魔力
    maven项目部署打包
  • 原文地址:https://www.cnblogs.com/kevin1988/p/12637786.html
Copyright © 2011-2022 走看看