SQL Server’da Tablo ve View’lardan Property Oluşturan Prosedür

SQL Server'da Tablo ve View'lardan Property Oluşturan Prosedür
SQL Server'da Tablo ve View'lardan Property Oluşturan Prosedür

Herkese merhaba. Bu yazıda SQL Server’da Tablo ve View’lardan Property oluşturan prosedür ile ilgili bilgi vermeye çalışacağım.

CSharp tarafında programlama yapıyorsanız Property’lere ihtiyacınız olmuştur.

SQL Server’da tablo yada view oluşturup sonrasında ise Property oluşturmak oldukça zamanınızı alabilir.

Aşağıdaki prosedürü kullanarak sizler de tablonuzun class yapısını rahatlıkla oluşturabilirsiniz.

CREATE  PROCEDURE [dbo].[usp_GenerateClassFromViewAndTable]
  @TabloViewAdi NVARCHAR(100),
  @ClassAdi NVARCHAR(100)
AS
BEGIN
declare @Sonuc varchar(max) = 'public class ' + @ClassAdi + '
{'

select @Sonuc = @Sonuc + '
    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(@TabloViewAdi)
) t
order by ColumnId

set @Sonuc = @Sonuc  + '
}'

PRINT  @Sonuc

END
GO

--Kullanımı

EXEC usp_GenerateClassFromViewAndTable 
@TabloViewAdi = N'TabloyadaViewAdi' 
,@ClassAdi = N'OlusturmakIstediginizClassAdi'

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

119 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!