Merhabalar,
SQL Server, T-SQL hakkında ilk yazımı yazıyorum. Esasında ilk başta temel yapılardan başlamayı düşünmüştüm ancak bu sefer farklı bir başlangıç yapmak istedim. Bu sebeple bu yazıyı okuyan kişilerin MS-SQL hakkında temel bilgileri bildiklerini varsayıyorum.
Bu yazıda piyasada Code Generator olarak bilinen yapıyı kendimiz oluşturacağız. Code Generator ne demek diyecek olursanız bizim Entity‘lerimizi kolayca üretmeyi sağlayan bir exedir. Entity nedir diye soracak olursanız da veritabanı üzerindeki tablolarımızın modelleridir diyebiliriz. Code Generator denen exe esasında arka tarafında birazdan yazacağımız bir SQL bloğu çalıştırmakta, sonuçlarını göstermektedir.
C# Entity Class Oluşturma
Evet, artık başlayalım. SQL Server’ı açalım. SQL Server verisyonum 2017 Developer Edition. Entity oluşturmak istediğim tablo da LogRecord tablosu. Aşağıdaki resimde de görebileceğiniz gibi çok olmasa da hatırı sayılabilecek alan sayısı olduğunu söylenebilir.

Şimdi bu kısımda SQL Server bize View’leri sayesinde yardımcı olacak. SQL Server’ın özel viewleri hakkında detaylı bilgiyi aşağıdaki linkten edinebilirsiniz.
Şimdi önce kolonlarımızı getirtelim. Aşağıdaki sorgu bize bu konuda yardımcı olacaktır.
SELECT * FROM sys.all_columns WHERE object_id = (SELECT OBJECT_ID ('LogRecord'))
Resimde sonuçlarını da görelim.

Artık kolonlarla ilgili olarak gerekli bilgiye sahibiz. Kolonların veri yapılarından kaynaklı olarak sahip oldukları özellikler de bu viewden bize gelmektedir. Şimdi bu tablodan bize system_type_id ve user_type_id isimli alanlar döndü. Yani aslında biz bu kolonların tiplerini de biliyoruz ama id değeri olarak biliyoruz. Bunların ne olduklarını bulabilmemiz için aşağıdaki sorgu bize yardımcı olacaktır.
SELECT * FROM sys.types
Sorgu sonucunu aşağıdaki resimde görebiliriz.

SQL Server üzerindeki tüm tipler ile ilgili bilgiler bu view üzerindedir. Şimdi tek yapmamız gereken sorguyu ayarlamak. Sorgumuzu parça parça yazıp geliştireceğiz. Şimdi bize lazım olan parçalar 2 view üzerinde olduğuna göre JOIN işlemi ile başlayabiliriz.

Şimdi sıra ihtiyacımız olan alanlar ile bu sorguyu düzenlemekte. Sorguyu aşağıdaki gibi düzenleyelim.

SQL Server – C# Veri Tipleri
Sorgumuz fena bir yere gelmedi aslında. Elimizde alan isimleri ve veri tipleri var ancak bu tipler SQL tipleri. Bizim oluşturacağımız entity hangi programlama dili içinse onun karşılığı veri tipini bulmalıyız. Esasında programlama dilleri içerisinde veri tipleri benzerlik göstermektedir. Ben C# programlama dilini baz alarak hareket edeceğim. C# veri tipleri ile ilgili detaylı bilgiye aşağıdaki linkten ulşabilirsiniz.
Şimdi sorgumuzun sondan bir önceki düzenlemesini yapalım. Sizin tablonuzda farklı tipler varsa yukarıdaki linkten yararlanarak C# karşılığını bulabilirsiniz. Ben sorgumu aşağıdaki hale getirdim.

Şimdi elimizde bir şeyler var. İsimler ve veri tipleri elimizde. Entity üzerinde değer setlenirken hiç bir kontrol yapmayacağım için Auto-implemented propertie haline getirmem yeterli olacaktır. Auto-implemeneted propertie kavaramının detaylı açıklamasına aşağıdaki linkten ulaşabilirsiniz.
Sorguyu aşağıdaki hale getiriyoruz.

Şu an elimizde tablonun kolonları yani propertieleri var. Bu kadar yapmışken sınıfını da ayarlayalım. Sorguyu son kez değiştiriyorum.

Artık entitymiz hazır. Sorgu sonucunu alıp class yaratabiliriz. Bir DB üzerindeki tüm tabloları bu şekilde hızlıca Entity haline getirip modellerimizi hazırlayabilir, proje ya da projelerimize hızlıca entegre edebiliriz.
Bir sonraki yazıda yeniden görüşmek dileğiyle… Diğer T-SQL konularına ulaşmak için tıklayın.
Gayet güzel ve çok işe yarar bir konuya değinmişsin. Ben bu formatı Excel üzerinde tasarlamıştım. Bu daha kullanışlı görünüyor. Artık bu yöntemi kullanacağım.
Bu güzel yazı için gerçekten teşekkür ederim.
Runtime da bu kod ile class oluşturup projeye dahil edebilirmiyiz..
Bildiğim kadarı ile bu mümkün değil. Bildiğim kadarı ile classlar build edilmeden önce hazırlanmış olmalıdır.