30-10-2018, Saat: 12:28
(Son Düzenleme: 30-10-2018, Saat: 12:29, Düzenleyen: Abdullah ILGAZ.)
Merhaba,
Yeni projelerimizden birisinde oluşan ihtiyaca binaen oluşturulan bir çözüm yöntemini sizlerle paylaşmak istiyorum.
Kısaca bahsetmek gerekirse;
ORM (Object-relational-mapping) yani nesne ilişkisel işaretleme prensibine başvurduğumuz çatı ve yapılar bulunuyor. .Net tabanında geliştirilen bu projede çok hızlı tablo-sınıf üretimi yapmak gerekiyordu. SQL Server ve Oracle veritabanlarında oluşturulan tablolar ve tabloların veri tiplerine göre yazılan bir sorgu ile C# kod çıktısı ürettim. Siz de ihtiyaçlarınız için dilediğiniz dil, yapı, kod ve kod bloklarını üretebilirsiniz.
Kullanıcılar isminde bir tablo oluşturalım.
Şimdi bu Kullanıcılar tablosunun kolonlarını ve veri tiplerini alıp C#'ta sınıf olarak oluşturalım.
Örnek Çıktı:
Daha fazlası için tıklayın
Yeni projelerimizden birisinde oluşan ihtiyaca binaen oluşturulan bir çözüm yöntemini sizlerle paylaşmak istiyorum.
Kısaca bahsetmek gerekirse;
ORM (Object-relational-mapping) yani nesne ilişkisel işaretleme prensibine başvurduğumuz çatı ve yapılar bulunuyor. .Net tabanında geliştirilen bu projede çok hızlı tablo-sınıf üretimi yapmak gerekiyordu. SQL Server ve Oracle veritabanlarında oluşturulan tablolar ve tabloların veri tiplerine göre yazılan bir sorgu ile C# kod çıktısı ürettim. Siz de ihtiyaçlarınız için dilediğiniz dil, yapı, kod ve kod bloklarını üretebilirsiniz.
Kullanıcılar isminde bir tablo oluşturalım.
CREATE TABLE [dbo].[Kullanicilar]( [Id] [int] IDENTITY(1,1) NOT NULL, [AdiSoyadi] [nvarchar](100) NOT NULL, [KullaniciAdi] [nvarchar](50) NOT NULL, [KullaniciSifre] [nvarchar](20) NOT NULL, [Durumu] [tinyint] NOT NULL, [OlusturmaTarihi] [datetime] NOT NULL, CONSTRAINT [PK_Kullanicilar] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] ) ON [PRIMARY] GO
Şimdi bu Kullanıcılar tablosunun kolonlarını ve veri tiplerini alıp C#'ta sınıf olarak oluşturalım.
declare @TableName sysname = 'Kullanicilar' 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 '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(@TableName) ) t order by ColumnId set @Result = @Result + ' }' print @Result
Örnek Çıktı:
public class Kullanicilar { public int Id { get; set; } public string AdiSoyadi { get; set; } public string KullaniciAdi { get; set; } public string KullaniciSifre { get; set; } public byte Durumu { get; set; } public DateTime OlusturmaTarihi { get; set; } }
Daha fazlası için tıklayın