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



  • 相关阅读:
    c语言----- 冒泡排序 for while do-while 递归练习
    c语言----实战植物大战僵尸
    c语言-----劫持系统03
    c语言-----劫持自己02
    c语言-----劫持原理01
    win10神州网信政府版去掉屏保
    将WebApi发布到IIS上(IIS6.0)(转)
    关于Logstash中grok插件的正则表达式例子
    说说看板在项目中的应用
    解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题
  • 原文地址:https://www.cnblogs.com/kevin1988/p/12637786.html
Copyright © 2011-2022 走看看