1. Ana Sayfa
  2. T-SQL
  3. SQL Server ile C# Entity Class Oluşturma
kz_g_n

SQL Server ile C# Entity Class Oluşturma


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.

MSSQL Ana Ekran
MSSQL

Ş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.

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql?view=sql-server-ver15

Ş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.

MSSQL Table
Table Columns

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.

MSSQL Data Types
MSSQL Data Types

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.

MSSQL JOIN
MSSQL JOIN

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

MSSQL SELECT
T-SQL SELECT

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.

https://social.msdn.microsoft.com/Forums/tr-TR/379a88e0-ebd5-4666-9b73-e16f77698a38/c-deikenler-veri-tipleri?forum=csharptr

Ş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.

MSSQL ENTITY
T-SQL Entity

Ş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.

https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties

Sorguyu aşağıdaki hale getiriyoruz.

T-SQL Entity Properties
T-SQL Entity Properties

Ş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.

T-SQL Entity Class
T-SQL Entity Class

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.

Yorum Yap

Yorum Yap

Yorumlar (1)

  1. 6 ay önce

    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.