DotNetFeaturedImages - Konsultan IT Bandung - Suhendra Yohana Putra

Convert SQL Server Table to C# Class

SQL (Structured Query Language) digunakan untuk berkomunikasi dengan database. SQL menjadi salah satu skill yang diperlukan oleh berbagai profesi di industri data seperti Data Analyst, Data Scientist, Database Administrator, Data Engineer dan sebagainya. Skill satu ini memiliki beragam fungsi yang bisa membantu pekerjaan praktisi data. Beberapa sistem manajemen basis data relasional umum yang menggunakan SQL adalah Oracle, Sybase, Microsoft SQL Server, Access, Ingres dan sebagainya.

Salah satunya adalah Microsoft SQL Server. Software jenis RDBMS (Relational Database Management System) ini cukup sering digunakan penggunanya, karena pemakaiannya yang fleksibel dapat digunakan dari jenis laptop manapun ke jaringan server cloud dan lain-lain. Perkembangannya pun cukup menjanjikan mulai dari versi SQL Server 1.0 yang pertama dirilis dan hingga saat ini.

Sebagai seorang Developer yang menggunakan SQL Server sebagai Database dan Bahasa Pemrograman C# tentunya sudah tidak asing dengan istilas Class Model.

Class Model biasa diartikan sebagai representasi dari table yang digunakan. Namun bagi sebagaian Developer terkadang membuat Class Model merupakan pekerjaan yang sedikit banyak akan memakan waktu.

Pembuatan Class Model sebetulnya bisa diakali dengan menggunakan Generator seperti Entity Framework (EF). EF Sendiri sering digunakan jika pengembangan aplikasi menggunakan metode “Database First” sehingga class Object akan terbentuk secara otomatis.

Berikut adalah cara untuk mengkonversi Table ke CSharp class menggunakan PL/SQL

				
					--Updated by @Sean on 23th,December 2022

declare @TableName sysname = 'NamaTableMu'  -- Replace this with your database table name.
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 'string'
            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  + '
}'

SELECT @Result
				
			

About suhendrayputra

Avatar of suhendrayputra
Konsultan IT Bandung, Freelance web developer Kota Bandung. Jasa Pembuatan Website dan Aplikasi Sistem Informasi. #java #aspnet #wordPress

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *