5 Ocak 2017 Perşembe

Sql kullanarak yazılım işimizi hızlandırmak

Merhaba,

Kod yazarken bize angarya olarak gelen şeyleri sql kullanarak
nasıl oluşturabileceğimizden bahsedeceğim. Buradaki örneklerden yola çıkarak benzer işlerimizi kolaylaştırabiliriz.
Aynı işlemi excel ile de yapabiliriz, önemli olan elindeki aracı işini kolaylaştırmak için nasıl kullanacağını bilmektir.

Veritabanında tblFirmalar diye bir tablomuz var. Ve biz bu tabloya ait bir Class yazıyoruz.
Tüm sütunları birer property olarak tek tek yaz tip değişkenini ayarla gibi uzun zahmetli işlerle uğraşma yerine
hazırda beklettiğiniz aşağıdaki sqlin sadece tablo adı kısmını değiştirip tüm tablolalarınız için bu işlemi uygulayabilirsiniz.
ben sadece int, string, bool ve datetime için c# karşılığını yazdım
başka bir sütun tipiniz varsa bunu when x then tip kısmında ayarlamanız gerekiyor.
buradaki veritabanı tiplerinin sayısal değerlerini
select * from sys.columns where object_id= OBJECT_ID('tblFirmalar','U')
yazdığımızda system_type_id sütununda görebiliriz.

şimdi
public int ID {get;set;}
gibi tüm sütunlar için bunu oluşturan sorguyu yazalım.

select
'public ' +
case system_type_id
when 56 then 'int'
when 231 then 'string'
when 61 then 'DateTime'
when 104 then 'bool'
else 'string'
end
+ ' ' + REPLACE(name,' ','_') + ' { get; set; } '
from sys.columns where object_id= OBJECT_ID('tblFirmalar','U')


sonra kodumuzda bir yerde bu objeden f isimli bir instace oluşturup bunun propertylerini
o sıra oluşmuş olan datarow (dr) dan doldurmduğumuz durumunda tüm sütunlar için tek tek
bunun gibi yazmamız gerekiyor.
f.ID=Convert.ToInt32(dr["ID"]);

Bu işlemi bizim için yapan sorgumuz da şöyle olacak:


select
' f.' + REPLACE(name,' ','_') + ' = ' +
case system_type_id
when 56 then ' Convert.ToInt32'
when 231 then 'Convert.ToString'
when 61 then 'Convert.ToDateTime'
when 104 then 'Convert.ToBoolean'
else 'Convert.ToString'
end
+ '(dr[' + char(34) + REPLACE(name,' ','_') + char(34) + ']);'
from sys.columns where object_id= OBJECT_ID('tblFirmalar','U')


Hiç yorum yok: