SQL de oluşturduğunuz tabloyu C# koduna çevirme SQL Scripti

20 Ekim 2023 Cuma

Yazılım Geliştirme esnasında en çok kullandığımız veritabanında yer alacak tabloların tek tek model sınıflarını oluşturmak tabloda yer alan fields (alanlar) lerin çok olması zahmetli bir iş olsa gerek aşağıdaki kod ile bu durumu kurtarıyoruz.

use URETIM
declare @TableName sysname = 'URETIM'
declare @result varchar(max) = 'public class ' + @TableName + '{'
 
select @result = @result + '
    public ' + ColumnType + ' ' + ColumnName + ' { get; set; }'
from
(
    select
        replace(col.name, ' ', '_') ColumnName,
        column_id,
        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 + 
        CASE
            WHEN col.is_nullable=1 AND
                 typ.name NOT IN (
                     'binary', 'varbinary', 'image',
                     'text', 'ntext',
                     'varchar', 'nvarchar', 'char', 'nchar')
            THEN '?'
            ELSE '' END AS [ColumnType]
    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 column_id
 
set @result = @result  + '}'
 
print @result

Bunları da beğenebilirsiniz.