.Net Core Web Api Tarafında SqlKata ile Sevimli SQL İşlemleri 28 Ekim 2020 Burak-Selim-Senyurt .Net Core Veri odaklı uygulamalarda sorgu komutlarını çalıştırmak için kullandığımız birçok hazır altyapı var. Örneğin .Net dünyasına baktığımızda en temel seviyede Ado.Net ve Object Releational Mapping tarafında Entity Framework sıklıkla karşılaştıklarımız arasında. SqlKata'da bunlardan birisi olarak düşünülebilir. Bir süredir de sağda solda okuduğum makale ve github çalışmalarından dolayı merak edip kurcalamak istediğim bir kütüphaneydi. C# ile geliştirimiş paketin temel amacı SqlServer, PostgreSql, Firebird, MySql gibi veritabanları için kod tarafında ortak bir sorgu oluşturma/derleme arabirimi sunmak ama bunu LINQ sorgu metotları üzerinden SQL dilinin anlaşılır rahatlığında, injection yemeden(Parameter Binding tekniğini kullandığı için) ve cache gibi performans artırıcıları kullanarak sağlamak... [Daha fazla]
Bir React Uygulamasında En Ala SQL Veritabanını Kullanmak 11 Kasım 2019 Burak-Selim-Senyurt React Öğrenecek bir şeyler araştırırken AlaSQL isimli bir çalışma ile karşılaştım. Tarayıcı üzerinde çalışabilen istemci taraflı bir In-Memory veritabanı olarak geçiyor. Tamamen saf Javascript ile yazılmış. Geleneksel ilişkisel veritabanı özelliklerinin çoğunu barındırıyor. Group, join, union gibi fonksiyonellikleri karşılıyor. In-Memory tutulan veriyi kalıcı olarak saklamakta mümkün. Hatta bu noktada localStorage olarak ifade edilen yerel depolama'dan veri okunup tekrar yazılabiliyor. IndexedDB veya Excel'ide fiziki repository olarak kullanabiliyor. Ayrıca JSON nesnelerle çalışabiliyoruz ki bu da NoSQL desteği anlamına gelmekte. Benim amacım onu yalın bir React uygulamasında deneyimlemeye çalışmak. [Daha fazla]
Web API Tarafında Dapper Kullanımı 16 Ağustos 2019 Burak-Selim-Senyurt .Net Core Veri kaynakları ile kod tarafındaki modeller arasında devreye giren bir çok ORM aracı mevcut. Stackoverflow tarafından geliştirilen ve Micro ORM olarak nitelendirilen Dapper bunlardan birisi. SQLite, MySQL, SQLCE, SQL Server, Firebird ve daha bir çok veritabanı platformu ile çalışabilen Dapper'ın performans olarak da iyi sonuçlar verdiği ifade edilmekte. Amacım Dapper'ı bir Web API uygulamasında SQLite ile birlikte kullanabilmek. [Daha fazla]
Apollo Server ile Bir GraphQL Sunucusu Yazmak 26 Nisan 2019 Burak-Selim-Senyurt Node.js Apollo Server, web, mobile gibi istemciler için GraphQL servisi sunan bir ürün olarak düşünülebilir. Otomatik API doküman desteği sunar ve herhangibir veri kaynağını kullanabilir. Yani bir veri tabanını veya bir mikroservisi ya da bir REST APIyi, GraphQL hizmeti verebilecek şekilde istemcilere açabilir. Tek başına sunucu gibi çalıştırılabileceğinden de ilgimi çekti aslında. Pek tabii Heroku gibi ortamlarca Serverless modda da kullanılabiliyor. [Daha fazla]
Bilmiyordum, Öğrendim : SQL Merge 13 Ocak 2019 Burak-Selim-Senyurt T SQL Gün geçmiyor ki çevremdeki insanlardan yeni bir şey daha öğrenmeyeyim. İş yerindeki sıkıcı sayılabilecek SQL sorguları arasında gezinirken takım arkadaşım Mustafa'nın bir önerisi üzerine SQL Merge komutunu araştırmaya başladım. 2008den beri var olan benim bihaber olduğum bu komutu öğrenirken keyifli anlar yaşadım. Normalde çok kötü bir SQLciyimdir ama Merge komutunu uygulamalı olarak denedikten sonra şirketteki o kallavi sorgunun hem daha da hızlandığını hem de daha okunur hale geldiğini gördüm. Sonunda konuyu kaleme alıp paylaşmanın iyi olacağını fark ettim. Haydi gelin başlayalım. [Daha fazla]
Docker SQL Server Kullanımı 09 Kasım 2018 Burak-Selim-Senyurt .Net Core West-World'e daha önceden Microsoft SQL Server sürümünü kurmuş ve basit denemeler yapmıştık. Esasında bu şart değildi. SQL Server'ın Linux platformu için olan Docker imajını da kullanabilirdik. İşte bu yazımızda docker imajını baz alarak, Entity Framework çatısının kullanan basit bir Web API servisini nasıl geliştirebileceğimizi öğrenmeye çalışacağız. [Daha fazla]
West-World'ün Uzaydan Gelen SQL Server ile Tanışması 26 Haziran 2018 Burak-Selim-Senyurt .Net Core Bizim kuşağın yazılımcıları uzun yıllar boyunca çeşitli çatışmalar içerisinde yer aldılar. Java'mı, .Net mi, SQL mi Oracle'mı, SOA'mı Microservices'mı....Bu ve benzeri tartışmalar uzun yıllar sürecek mi diye düşünürken birden şartlar değişmeye başladı. Mesela Microsoft açık kaynak dünyası ile el sıkıştı, ortaya .Net Core'u koydu. Hatta Java Developers Day'a altın ortak bile oluverdi. Ne alıp veremdikleri vardı ki bu ayrı dünyalarda yaşadıklarını zanneden standart koyucuların... [Daha fazla]
EF Core ile MariaDb Kullanımı 19 Şubat 2018 Burak-Selim-Senyurt .Net Core Bu yazımızda MySQL’in yaratıcısı olan Monty Widenius‘un MySQL’in kodunu çatallayıp oluşturduğu ve kızının adını verdiği MariaDB'nin Entity Framework Core ile nasıl kullanılabileceğini incelemeye çalışıyoruz. [Daha fazla]
GoLang - Bir ORM Denemesi 17 Temmuz 2017 Burak-Selim-Senyurt GoLang Veri depolamanın en popüler yolu NoSQL veya RDBMS bazlı sistemler. 90lı yıllardan beri program yazan insanlar için de özellikle Microsoft SQL Server, Oracle ve sonrasında gelen MySQL ya da SQLite gibi yapılar da oldukça fazla oranda kullanılmaktalar. E tabii bildiğiniz üzere bu serüvenin ortalarında bir yerlerde SQL dili ve RDBMS'in yapısının, programcıların kodlama mantığına biraz ters gelişi de vuku buldu. Sonuçta SQL tarafındaki varlıkların programatik ortamda ve özellikle nesne yönelimli(Object Oriented) dünyada nasıl daha anlamlı ele alınabileceğinin yolları araştırıldı. Artık popüler olma zamanı nesne ilişkilendirmelerini sağlayan araçlardaydı. Yani Object Relational Mapping(O/RM) konusu gündemdeydi. Neredeyse bütün programlama çatılarının bu tip araçlarla yakın ilişkisi bulunmakta. Hibernate ve Entity Framework gibi en azından ülkemizde adını sıklıkla duyduğumuz araçlar dışında farklı pek çok ürün de bulunmakta. Ben de GoLang tarafında SQLite operasyonlarını incelemeye çalışırken "bir O/RM aracı var mıdır?" sorusuna cevap ararken buldum kendimi. Murat Hoca'nın kitabı, GoLang'in resmi dokümanları, Stackoverflow konuları derken gitub üzerinden sunulan GORM ile karşlılaştım. [Daha fazla]
Tek Fotoluk İpucu 128 - DataTable içeriğini Generic List'e İndirmek 21 Mart 2016 Burak-Selim-Senyurt Tek Fotoluk Ipucu Diyelim ki kullandığınız harici bir metod size DataTable tipinden bir nesne örneği döndürmekte. Ne var ki kendi sisteminizde bu nesne içeriğini List tipinden koleksiyon örnekleri ile dolaştırmanız gerekiyor. Hatta DataTable içeriğinin doldurulduğu tablonun kolon adları da sizin programınızdaki standartlar ile uyumlu değil. Bu durumda karşımıza şöyle bir soru çıkıyor. Herhangi bir DataTable içeriğini bir List tipine nasıl dönüştürebiliriz? [Daha fazla]
Ruby Kod Parçacıkları 19 - SQLite ile Basit Veritabanı İşlemleri 07 Şubat 2016 Burak-Selim-Senyurt Ruby Sanıyorum bir programlama dilini öğrenirken en çok merak edilen konulardan birisi de veritabanı işlemleridir. "Hani bir uygulama yazabilsem de bilgileri veritabanına kayıt edebilsem ve oradan okuyabilsem süper olur" benzeri bir cümleyi eminim hepimiz kurmuşuzdur. Günümüzde geliştirilen uygulamalar mutlak suretle verileri kalıcı olarak saklamaya ihtiyaç duyar. [Daha fazla]
Tek Fotoluk İpucu 113 - Dapper.Net ile Hello World 07 Haziran 2015 Burak-Selim-Senyurt Tek Fotoluk Ipucu Gecenin bir yarısı. Bilgisayarınızın başındasınız. Önünüzde Visual Studio. Yanınızda kahveniz/çayınız. Canınız da sıkılmış. Acaba ne yapsam da vaktimi iyi değerlendirebilsem diye düşünüyorsunuz. Böyle hallerde şöyle bir NuGet paketi bulup araştırmak bünyeye iyi gelebiliyor. Bunun için Nuget Must Haves isimli siteyi ziyaret edebilirsiniz. Diyelim ki öyle bir gece ve orada Dapper.Net diye bir paket gördünüz. Hatta azcık Entity Framework, Oracel/SQL ve O-RM(Object Relational Mapping) bilginiz var. Hazır elinizin altında da Microsoft'un emektar Northwind veritabanı. O halde ne duruyorsunuz. Bir Hello World diyivirsiniz ya! [Daha fazla]
Tek Fotoluk İpucu 91–Timestamp Veriyi String Olarak Okumak 25 Mart 2013 Burak-Selim-Senyurt Tek Fotoluk Ipucu Merhaba Arkadaşlar, Diyelim ki SQL Server üzerinde duran tablolarda timestamp veri tipinden alanlar bulunmakta ve siz bu alanları belki bir Backoffice uygulamasında belki bir admin panelde, kullanıcalara göstermek istiyorsunuz. Normal şartlarda bilindiği üzere bu alan bir byte[] arra... [Daha fazla]
Tek Fotoluk İpucu 49–Daha Hızlı Count 07 Mart 2012 Burak-Selim-Senyurt T SQL Merhaba Arkadaşlar, Çok yüksek rakamlarda satır içeren(Milonylarca Satır) tablolar söz konusu olduğunda, bunların satır sayılarını, Count Aggregate fonksiyonu ile bulurken süre kaybı yaşıyorsak ve sonuçları geç alıyorsak daha hızlı bir yola başvurabiliriz.... [Daha fazla]
Ocak Bültenim 22 Ocak 2012 Burak-Selim-Senyurt Journal Zaman ne kadar da hızlı akıyor öyle değil mi? Bakın 2012' ye ha girdik gireceğiz derken, senenin ilk ayını da tamamlamış durumdayız. İstanbul' da bu sene çok fazla kar görememiş ve onu özlemiş olsakta bir ayda bu şekilde geldi geçti işte. Peki ben 2012 yılını nasıl geçirmeyi planlıyorum. Aslına bakarsanız son aylarda içimde doğan yazma isteğini devam ettirmek niyetindeyim. Fakat her zaman dediğim gibi istikrar çok ama çok önemli. Yaptığım planlamaya göre ayda 2 Teknik Makale, 1 Webiner(NedirTv?com), 2 Tek Fotoluk İpucu ve bir de Aylık Bülten yayınlamayı düşünüyorum. [Daha fazla]
Tek Fotoluk İpucu 45 - Schema Adı ile birlikte Tablo Satır Sayılarını Elde Etmek 12 Ocak 2012 Burak-Selim-Senyurt Tek Fotoluk Ipucu Merhaba Arkadaşlar, SQL tarafındaki sistemsel nesneleri göz önüne aldığımızda inanılma faydalı ve bilgilendirici sorgular yazabildiğimizi eminim ki hepiniz biliyorsunuzdur. Söz gelimi bir veritabanı içerisinde yer alan tablo adlarını, şema adları ile birlikte ve günc... [Daha fazla]
T-SQL ile Dinlenmece Eğlenmece 14 Aralık 2011 Burak-Selim-Senyurt T SQL Açıkçası geçtiğimiz günlerde böyle sıkkın ve bıkkın bir ruh halindeyken ve konuşmak istediğim tüm arkadaşlarım yoğunken, ekranımda duran Management Studio' daki bembeyaz ve bomboş Query penceresi ile muhabbet etmeye karar verdim. Aslında amacım basitti. Daha önceki tecrübelerime dayanarak ihtiyaçlar dahilinde kullandığım T-SQL ifadelerini şöyle bir tekrar etmeye çalışacak ve siz değerli okurlarıma bir blog girdisi olarak sunacaktım. Aklıma geldikçe ihtiyaçlarımın T-SQL karşılıklarını yazmaya başladım. Düşündüğüm ilk gereksinim, sistemimde yüklü olan kaç veritabanı olduğunu ve bunlara ait bazı temel bilgileri edinmekti...İşte serüvenimiz bu ilk sorgumuz ile başlıyor. [Daha fazla]
Tek Fotoluk İpucu-42(ExecuteQuery ile Injection' dan Korunmak) 26 Kasım 2011 Burak-Selim-Senyurt C#, LINQ to SQL, Tek Fotoluk Ipucu Merhaba Arkadaşlar, LINQ to SQL kullandığımız durumlarda bildiğiniz gibi dışarıdan SQL sorgularını da icra ettirebilmekteyiz. Bu amaçla DataContext tipinin ExecuteQuery metodu kullanılmakta. Ancak özellikle SQL Injection saldırılarına karşı dikkatli olmamız gerekiyor. Bu nedenle sö... [Daha fazla]
Büyük Nesneler(Large Objects) ile Çalışmak 11 Temmuz 2006 Burak-Selim-Senyurt C# Veritabanı programcılığında zaman zaman büyük nesneler (large objects) ile çalışmak zorunda kalabiliriz. Görüntü, ses, resim, text dökümanı, çalıştırılabilir uygulamalar gibi dosyalar bir veritabanı için büyük nesne (large objects) olabilecek kaynaklardır. Bu gibi dosyaların veritabanı üzerinde alanlar (fields) içerisinde saklanabilmesi bazı özel veritabanı türleri ile mümkün olabilmektedir. Sql Server temel olarak büyük nesneleri iki kategoriye ayırmaktadır. [Daha fazla]
İlişkiler ve Hesaplanmış Alanların Bir Arada Kulllanılması 08 Nisan 2004 Burak-Selim-Senyurt Ado.Net Bu makalemizde aralarında bire-çok (one-to-many) ilişki olan tablolar için hesaplanmış alanların, (yani DataColumn sınıfının Expression özelliği ile oluşturduğumuz sütunların) tablolar arasındaki ilişkiler ile nasıl bir arada kullanılabileceğini incelemeye çalışacağız. Burada bir arada kullanımdan kastım, örnek olarak; ebevyn (parent) tabloda fiziki olarak var olmayan ancak uygulamanın çalışması sırasında oluşturulacak bir sütundan, detay tablosundaki ilişkili alanlar üzerinden toplam, ortalama, miktar gibi Aggregate ifadelerinin çalıştırılmasından ve sonuçların yine parent tabloya yansıtılmasından bahsediyorum. [Daha fazla]
DataRelation Sınıfı ve Çoğa-Çok (Many-to-many) İlişkiler 01 Nisan 2004 Burak-Selim-Senyurt Ado.Net Bugünkü makalemizde, DataRelation sınıfı yardımıyla, veritabanlarındaki many-to-many(Çoğa-çok) ilişkilerin, bağlantısız katmanda nasıl kullanılabildiğini incelemeye çalışacağız. İlişkisel veri tabanı modelinde, tablolar arası ilişkilerde çoğunlukla bire-çok(one-to-many) ilişkilere rastlarız. Ancak azda olsa, çoğa-çok ilişkilerin kullanıldığı durumlarda söz konusudur. [Daha fazla]
OleDbDataAdapter Sınıfı Olayları 18 Mart 2004 Burak-Selim-Senyurt Ado.Net Bu makalemizde, OleDbDataAdapter sınıfının olaylarını incelemeye çalışacağız. OleDbDataAdapter sınıfı aşağıdaki tabloda belirtilen üç önemli olayı içermektedir. Şimdi dilerseniz bu olayları kısaca incelemeye çalışalım. RowUpdating olayından başlayalım. Bu olay, OleDbRowUpdatingEventArgs sınıfı türünden bir parametre almaktadır. Bu paramterenin sahip olduğu özellikleri kullanarak, bağlantısız katmandaki veriler, veritabanına yazılmadan önce değişik işlevleri yerine getirme imkanına sahip olmuş oluruz. OleDbRowUpdatingEventArgs sınıfının özellikleri aşağıdaki tabloda yer almaktadır. [Daha fazla]
OleDbDataAdapter Sınıfı ve Update Metodu. 14 Mart 2004 Burak-Selim-Senyurt Ado.Net Bu makalemizde, OleDbDataAdapter sınıfının , veriler üzerindeki güncelleme işlemlerinin, veri kaynağına yansıtılması sırasında nasıl bir rol oynadığını ve kullanıldığını incelemeye çalışacağız. Önceki makalelerimizde belirttiğimiz gibi, OleDbDataAdapter nesnesi yardımıyla veri kaynağından, uygulamalarımızdaki bağlantısız katman nesnelerine veri kümelerini aktarmak amacıyla Fill metodunu kullanıyorduk. Diğer yandan, bağlantısız katman nesnelerimizin temsil ettiği veriler üzerinde yapılan değişiklikleri veritabanına göndermek istersek, Update metodunu kullanırız. [Daha fazla]
OleDbDataAdapter Sınıfı - 2 02 Mart 2004 Burak-Selim-Senyurt Ado.Net Önceki makalemizde, OleDbDataAdapter sınıfının ne işe yaradığından bahsetmiş ve kısa bir giriş yapmıştık. Bu makalemizde, OleDbDataAdapter sınıfının diğer önemli unsurlarını incelemeye devam edeceğiz. İncelemek istediğim ilk konu, OleDbDataAdapter nesnesi yardımıyla, ilişkisel veritabanı modellerinden bağlantısız katmana aktarılan tabloların, sahip olduğu birincil anahtar (Primary Key) ve kısıtlamaların (Constraints) ne şekilde irdelendiği olucak. Konuyu iyice kavrayabilmek amacıyla aşağıdaki basit örnek ile incelememize başlayalım. Bu örneğimizde, sql sunucumuzda yer alan bir tabloya ait verileri DataSet üzerine alıyor ve alınan alanların bir takım bilgilerini okuyoruz. Örneğin, alanların veri tipi, boyutu, null değerler içerip içermediği ve alan adları bilgilerini ekrana yazdırıyoruz. [Daha fazla]
Command Kavramı ve OleDbCommand Sınıfı 23 Şubat 2004 Burak-Selim-Senyurt Ado.Net Bu makalemizde, Ado.Net mimarisi içinde çok önemli bir yere sahip olan Command kavramını ve OleDbCommand sınıfına ait en temel üyeleri incelemeye çalışacağız. Veritabanı uygulamaları geliştiren her programcı mutlaka, veri kaynağına doğru bir takım sorgu komutlarına ihtiyaç duymaktadır. Örneğin, veri kaynağındaki bir tabloya yeni bir satır eklemek için, veri kaynağı üzerinde bir tablo yaratmak için veya veri kaynağından belli şartlara uyan veri kümelerini çekmek için vb... Tüm bu işlemler için Ado.Net mimarisi bize, sql sorgularını barındırabileceğimiz ve geçerli bir bağlantı hattı üzerinden çalıştırabileceğimiz Command sınıfını sunmaktadır. Şu an itibariyle, Ado.Net mimarisi 4 temel Command sınıfı içerir. Bunlar, OleDbCommand, SqlCommand, OracleCommand ve OdbcCommand sınıflarıdır. [Daha fazla]