31 Mayıs 2014 Cumartesi

C# ref out keywords...

Merhaba, bu yayınımda C# kullanıcıları için ref ve out anahtar kelimelerine açıklık getirmeye çalışacağım. Bilindiği üzere C# ta temel olarak iki adet veri türü vardır. Bunlar değer(value) veri türleri ve referans(reference) veri türleridir. Örnek gösterirsek eğer int, double, boolean, struct, enum tipleri değer değer türü; string , class, object, delegate örnekleri de birer referans türleridir. Değer türünde olan bir değişken herhangi bir ifade içinde kullanılırsa o değişkenin yeni bir kopyası oluşmuş olup o an kullanılan değişken haline gelecektir. Yani kullandığımız değişken bizim düşündüğümüz değişken değil bir kopya olmuş olacaktır. O ifadeden ayrıldığımızda (bu ifade bir fonksiyon olabilir) ve değişkeni yeniden kullandığımız zaman kopya değil de orjinal değişken olduğunu bilmeliyiz. Bunu bir örnekle de açıklayacağım.



Örneğe bakarsak eğer iki tane değer tipi olan değişkenlerimizin değerleri gönderildikleri fonksiyonda değiştirilip tekrar bu değişkene atanıyor. İşte tam burada aslında fonksiyonun içindeki değişkenin bir kopya olduğunu anlayabiliyoruz. Çünkü değişen değer fonksiyona gönderilen değişkenin değeri olmuyor, kopya değişkenin değeri oluyor. Bu bağlamda bir değer tipinin değerini nasıl bir fonksiyon yardımıyla değiştirebileceğimiz sorusu akla gelebilir. Burada da yardımcı olan anahtar kelimemiz ref oluyor. Örneğini gösterirsem eğer;

  
Görüldüğü üzere değerler değişti, bir kopya yaratılmadı. Yalnız burada dikkat edeceğimiz husus fonksiyonla gönderdiğimi değerleri yine ref anahtar kelimesiyle göndermek gerektiğidir. Ayrıca gönderilen değişkenlerin  mutlaka bir değer atamasına sahip olması gerektiğini unutmayalım.
Şimdi out keywordunun amacından bahsetmeye gelelim. Out anahtarı aslında ref anahtar kelimesiyle neredeyse tamamen aynıdır. Tek farkı ilk değer atamasının olması zorunlu değildir. Çünkü bu değer gönderileceği metot içinde belirlenecektir. 


Görüldüğü üzere değer tiplerinin değerlerini bu anahtar kelimelerle bu yöntemi izleyerek değiştirebildik. Bu konuda anlatacaklarım bu kadar, kendinize iyi bakın.

Visual Studio Setup dosyası hazırlamak...

 Merhaba, birazdan size Visual Studio IDE'si kullanılarak nasıl bir setup dosyası hazırlanıldığını kısaca anlatacağım. Ayrıntılandırılmış hali microsoft'un sitesinde veya başka sitelerde mevcut bulunuyordur. Bu işlemin ben localhostumda başlatılmasını istiyorum. İşe koyulursak önce hazırladığımız projenin adına sağ click yapıyoruz ve en alttaki Properties seçeneğini seçiyoruz.




Buradan en alttaki Publish seçeneğine tıklıyorum.


 Şimdi Publishing Folder Location setup'ımızı oluşturacağımız yolu belirliyoruz.


Burada localhostumda tuttuğum dizinleri görüntülüyorum çünkü bu dizin içine setupımı atacağım.


 Local IIS bölümünden mySetup dizinimi seçiyorum. Application Files... butonuna tıklayarak dizin içine aktarılacak dosyaları da görüntüleyebiliriz.


İsteyebileceğimiz bir çok ayarı bu arayüzden yine yapabiliriz. Kısaca bahsedersek Prerequisites butonuyla setupımızı çalıştıracak kullanıcıda olması gerekli olan bileşenleri belirleyebiliyoruz. Dilersek bunu siteden indirmesini ya da bizim dosyalarımız içinde bulunmasını ayarlayabiliyoruz. Updates butonuyla güncelleme işlelerinde yapılabilecek seçenekler yer alıyor. Dilersek bunları kendimize göre ayarlayabiliyoruz. Options bölümünde de ürünümüze isim verme gibi bir takım ayrıntı seçeneklerde bulunuyor. Şimdi ben hızlıca oluşturma işlemine geçeceğim.



Publish Wizard butonuna tıklayarak kalan default değerlerle işlemi ilerletiyorum. Açılan arayüzden Finish butonuna tıklıyorum ve Built edilme işlemini görüyorum.


Karşımıza localhost ekranı geldiğinde işlemimiz sonlandı sayılabilir. Şimdi buradan setup dosyamızı indirip çalıştırabiliriz.


Gördüğünüz üzere setup dosyasını indirip çalıştırdım ve projemi açtım. Benim ayrıntıya inmediğim yerlerde setup için farklı ayarlamalar yapıp bu işlemi farklı şekillerde de gerçekleştirebilirdik. Bu konuda anlatacaklarım bu kadar, kendinize iyi bakın.



30 Mayıs 2014 Cuma

C# const ve readonly...

Merhaba, birazdan size C# ta bazı zamanlarda gerek duyduğumuz değeri değişmeyen değişkenler olan readonly ve const anahtar kelimeleri hakkında bilgi vereceğim. const keyword'unu açıklarsak Türkçe karşılığı sabit anlamına gelen bu anahtar kelime ile tanımlanan değişkenin değeri tanımlandığı yerde verilmek zorundadır. Aksi takdirde hata ile karşılaşırız. Bu değişkenin tanımlandıktan sonra değeri bir daha değiştirilemeyecektir. Bir örnekle açıklarsak;


Görüldüğü üzere tanımladığımız bu değişkenin değerini yeniden vermeye imkan tanınmıyor ve tanımlı olması zorunlu bir değişken mesajı alıyoruz. Bu değişkenin program içinde görülebildiği her alandaki değeri artık 5 tir.

Şimdi readonly keyword hakkında bilgi verelim. Sadece okunabilir anlamına gelen bu anahtar kelimenin const anahtar kelimesinden farklı olarak; bu anahtar kelimeye sahip olan değişkenin tanımlama sırasında değer ataması zorunlu değildir. Fakat bu değişkene değer verildiği andan itibaren yeni bir değer ataması yapamayız. Artık bu değişkenin değeri const keywordunde olduğu gibi değişmez olur. Readonly keywordu alan bir değişkenin değer ataması genelde constructor(yapıcı)'da tanımlanır. Yine bir örneğini gösterirsek;




      
Yukarıdaki örneğimizde gördüğünüz gibi iki adet kullanabileceğimiz constructor'umuz var. Gerekliliğe göre istediğimiz yapıcıyı çalıştırıp örneğini yaratabiliriz fakat fark olarak constructor içinde değer ataması yapılan readonly anahtar kelimesine sahip olan değişkene olan değer atamaları var. Bunlar yaratılan örneğe göre farklılık gösterecektir. Burada örnek yaratıldığında bu değişken artık o değere sahip olacaktır ve artık bir daha değeri değiştirilemeyecektir. Örneğin bu değeri değiştirmeye yönelik bir fonksiyon oluşturursak;



Görüldüğü gibi buna izin olmayacaktır. Bu örnekle beraber readonly'nin genel kullanım şekliyle ilgili bilgiye sahip olabilir ve çeşitli fikirlerle de çeşitli şekilde kullanabiliriz.

Bu konuda anlatacaklarım bu kadar, iyi günler dilerim.

26 Mayıs 2014 Pazartesi

Entity Framework örnek çalışma

İyi günler, birazdan size önceden bahsetmiş olduğum ve projelerinizde başvurmanız muhtemel olan Entity Framework'un kalıp olan bir kaç kod yapısını anlatacağım. Aşağıdaki anlatacaklarımı önceden anlatmış olduğum Entity Framework başlangıç... başlıklı konunun devamı olarak nitelendirebiliriz. Yani o konuda anlatılanlar aynı şekilde burada uygulandı. Yalnızca önceki anlattığım bir Windows Form Application iken bu sefer anlatacağım bir WPF uygulaması. Bu bize yapılan işlerde bir değişiklik sağlamayacak, zaten önceki konuda da bundan bahsetmiştim.

İlk olarak database'imizden verileri bir Data Grid'e nasıl çektiğimizden bahsedeceğim. Öncesinde Data Grid'in ne olduğundan bahsetmekte bir yarar olabilir. Data Grid veritabanımızdaki verileri üzerinde yansıtan bir objedir. Fakat sütun isimlerini değiştirmek, arka plan regini ayarlamak gibi artı olarak elbette birkaç özelliği de var. İşe koyulursak;


Data Grid'i Toolbox'umuzdan tutup sürükleyerek penceremizin içine atıyoruz. Burada ayrıca WPF projesinin Windows Form'a göre artı olan bir özelliği XMAL kodlama arayüzünü aşağıda fark etmiş olabilirsiniz. Bu kodlamada bazı kolaylılklar getiriyor. Kod yazma işlemini dilerseniz buradan da yapabilirsiniz. Mesela ben Data Grid ismini burada Name="dataGridim" olarak değiştirdim. XMAL kısmına bakarsanız bunu göreceksinizdir. Tekrar konumuza dönersek ben bu pencere load(yüklemek) olduğunda veritabanındaki verilerin son güncel halini alınmasını istiyorum. Bu yüzden sağ alttaki Properties bölümünden Eventleri(yıldırım sembollü buton) görüntüleyip buradan Loaded textboxunun içine çift tıkladım ve kod arayüzüne geçtim.


Burada önce veritabanının içinden verileri almak için bir nesneye ihtiyaç duyuyoruz. Bu yüzden bu nesneyi hemen üstte yarattım.


Üstteki resimde gördüğünüz kodları yazıp projenizi Start ederseniz yine yukarıdaki resimde görünün pencereyi elde edersiniz. Kısacası veritabanımızdaki verileri Data Grid içine yansıttık. Koddan biraz bahsedersek var veri tipinde bir değişkenin içine üstte yaratığımız nesneyi de kullanarak verileri bir liste halinde attık ve Data Grid içine koyduk. Kodun başında Data Grid'imizin Itemlerini temizlememizin nedeni her load işleminde bu kodun çalışacak olmasıdır. Fakat bazı zamanlar isteklerimiz bununla sınırlı kalmıyor. Veritabanın da iki tabloyu join edip bu bilgileri nasıl yansıtacağız? Sutun adlarını nasıl ayarlayacağız? Bunu aşağıdaki resimle beraber anlatmaya başlayacağım. İyi denilecek kadar sql komutlarını tanıyorsanız bu kod kalıplarında pek zorlanmayacaksınızdır.


 Yukarıda yazmış olduğum kod EF'in en genel kod yapılarındandır. Verileri istediğimiz formatta çektik, sutun isimlerini de ayarladık,listeledik ve Data Gridimizin içinde yansıttık. Ayrıca Data Gridimizin arka plan rengini ayarlamak isteseydik hem buradan kod ile ya da XMAL arayüzünde ya da Data Grid Properties alanından ayarlayabilirdik. Bu konu üzerinde anlatacaklarım bu kadar, iyi günler dilerim.

21 Mayıs 2014 Çarşamba

Entity Framework başlangıç...

Merhaba, birazdan size Microsoft Visual Studio IDE'si içinde bize sunulan çok kullanışlı bir yapı olan Entity Framework'ten bahsedeceğim. Entity Framework (EF) ilk olarak .NET 3.5 SP1 ve Microsoft Visual Studio 2008 SP1 ile 11 Ağustos 2008 tarihinde gelmiştir.  Kısacası Entity Framework .NET platformu için geliştirilmiş olan ORM frameworklerinden biri. Ayrıca proje geliştirirken sıklıkla kullanılan ve büyük bir yükten kurtaran bir yapıdır. Projemiz ile veritabanımız arasındaki bağlantıda uyguladığımız işleri bir angarya olarak görme düşüncesi alacak birazdan bizleri. İşe koyulursak ben yeni bir Windows Form Application projesi açtım fakat dilerseniz siz WPF projesi açıp daha kapsamlı bir proje alt yapısı oluşturabilirsiniz. İkisinde de yapacağımız işlemler aynı ;


TOOLS bölümünden Connect to Database... seçeneğine tıklıyoruz.


Change... butonundan bağlanacağımız veritabanı kaynağını şeçiyoruz.


Server name bölümünde bilgisayarımız ile eşleştiriyoruz. İlk durumda eşleştirecek bir isim gelmezse Refresh butonuna tıklayıp yeniliyoruz.


Select or enter a database name :          bölümünde veritabanı sunucumuzda kayıtlı olan database isimleri listelenecek. Hangi database'e bağlantı oluşturacaksak onu seçiyoruz.

Son olarakta Test Connection butonuna tıklayıp oluşturulacak bağlantıyı test ediyoruz. Bağlantı başarılı mesajını gördükten sonra OK butonuna tıklıyoruz.

Gördüğünüz üzre sol tarafta database tabloları listelendi. Buradan anlaşıldığı gibi bağlantıyı kurduk, şimdi sıra geldi Entity Modeli'mizi oluşturmaya.

Projemize sağ click yapıp Add seçeneğinden New Item... şeçeneğini tıklıyoruz.


ADO.NET Entity Data Model seçeneğini seçip Add butonuna tıklıyoruz. Dilersek modelimize Name bölümünden bir isim verebiliyoruz. Benimki default olarak kalsın.


Generate from database seçeneğini seçip Next> butonuna tıklıyoruz.

Bağlantımızı sağlamış olduğumuzdan dolayı default olarak bağlantımız seçili olacaktır. Entity  Next> butonuna tıklayalım.

Eğer database'inizdeki tablo isimleri İngilizce çoğul eki olan 's' uzantısıyla birlikte kodlansın istiyorsanız Pluralize or singularize generated object names seçeneğini check ediyorsanız. Tables seçeneğini check edip Finish butonuna tıklıyoruz.

Görüldüğü üzre Modelimizi de oluştururduk ve tabloların diagramı önümüze geldi. Bağlantımızı bir Refresh etmekte fayda var. Bir önceki resimde görünen bağlantı hatası böylelikle düzeldi.


Kod bölümünde tablo isimlerimizi de görüyoruz bundan sonra iş kodlama yeteneğine kalıyor. Tabi öncelikle Entity Framework kodlama biçimleri hakkında bir ön çalışma yapmış olmalıyız. Bu konuda anlatacaklarım bu kadar kendinize iyi bakın, görüşmek üzere...