• 28 Mart 2024 13:30

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

Veri tabanı işlemlerinin gerçekleştirildiği yazılımlarda tabloların entity C# sınıfları gerekebilmektedir. Her ne kadar Visual Studio içerisinde barındırdığı araçlar ile bunu otomatik yapıyorsa da T-SQL kodları kullanılarak da ilgili sınıf SQL Server tarafında oluşturulup kopyala – yapıştır ile projeye eklenebilir.

Aşağıdaki T-SQL kodu içerisinde ilk satırdaki ‘TableName’ yerine tırnaklar içerisine sınıf karşılığı oluşturulacak tablo yazılıp çalıştırıldığında print komutu ile oluşturulan sınıf ekrana gelecektir.

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 '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 

    where object_id = object_id(@TableName) 

) t 

order by ColumnId 

set @Result = @Result  + ' 

}' 

print @Result 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.