SORU
3 Mayıs 2011, Salı


Veritabanı tablosundan sınıf oluşturmak

Nasıl SQL Server bir tablodan bir sınıf oluşturabilir miyim?

Bazı ORM kullanarak bahsetmiyorum. Ben sadece varlıkları (basit sınıfı) oluşturmanız gerekir. Gibi bir şey

public class Person 
{
    public string Name { get;set; }
    public string Phone { get;set; }
}

CEVAP
3 Mayıs 2011, Salı


@Tablonun adı TableName Set.

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013
  • KIT KAT

    KIT KAT

    3 EKİM 2005