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.