EntityFramework SqlMigrations ile Verileriniz Kaybolmasın

Başlıktan bir şey anlamamış olabilirsiniz ama eğer Ado.Net Entity ile ilgiliyseniz bu yazı çok hoşunuza gidecek ;)

3-5 dakika önce Google Reader dan Code First Migrations: Walkthrough of August 2011 CTP başlığıyla gördüğüm yazıyı hemen sizlerle paylaşmak istedim.

Bildiğiniz üzere eğer modelinizi code-first yaklaşımıyla oluşturmuşsanız ve projenizi çalıştırmışsanız veritabanı otomatik olarak oluşuyor ve sonrasında modelinizde yaptığınız değişikliği veritabanına uygulamak için context inizin içine “System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<Test.Models.TestContext>());” ifadesini ekleyerek modeldeki güncellemeyi veritabanımıza uyguluyorduk. Fakat bu yöntemde istenmeyen bir durum oluşuyor ve eğer veritabanında bilgi varsa bilgilerde gidiyordu çünkü bu kod veritabanını komple kaldırıp yeniden oluşturarak güncelleme işini yapıyordu. Artık bu can sıkıcı durumdan kurtuluyoruz !

Yapmamız gereken tek şey projemize “EntityFramework.SqlMigrationspaketini eklemek. Sonrasında yeni bir alanı güncellemek için paket yönetici konsoluna “Update-Database” komutunuı yazıp çalıştırmamız yeterli oluyor. Eğer varolan bir alanın adını güncellemek istiyorsak “Update-Database -Renames:”kullanici.Email=>kullanici.EmailAddress”” komutunu çalıştırmamız yeterli. SqlMigrations’ un diğer özelliklerine buradan bakabilirsiniz. Bu işlemler yapılırken veritabanı içindeki bilgi kaybolmuyor sadece ilgili değişiklikler yapılıyor.

Bu mekanızma sayesinde önemli bir açığın kapandığını düşünüyorum, yukarda da belirttiğim gibi can sıkıcı bir durumdu ve iki türlü iş ile uğraşıyorduk. Biraz alel acele yazmak zorunda kaldım fakat durum sanıyorum anlaşılmıştır :)

ADO.NET Entity’ e Giriş eKitabı

ADO.Net Entity’ e başlangıç yapmak için faydalı olacağına inandığım bir eKitap yazdım. Umarım konuya ilgi duyan arkadaşların işine yarayan bir kaynak olmuştur. Gelen istekler üzerine sürekli güncellemeye çalışacağım bu kitabı buradan indirebilirsiniz. Olumlu olumsuz görüşlerinizi belirtirseniz çok mutlu olurum ;)

PagedList kullanarak verileri sayfalama

Verileri sayfalamak iyidir :D Giriş için cümle bulamıyorum resmen, neyse siz girdik sayın :)

Sağa sola bulaşmadan Nuget Gallery den PagedList.Mvc paketini projemize ekliyoruz. Nasıl ekliyoruz sorusunun cevabını burada bulabilirsiniz. PagedList açık kaynak bir proje, github sayfasına buradan ulaşabilirsiniz.


Okumaya devam et PagedList kullanarak verileri sayfalama

Mvc 3 Tools Update ve Getirdikleri

Bu konuyu nasıl atladım, bu kadar zamandır nasıl bahsetmedim bilmiyorum :S Öncelikle ASP.NET MVC 3 Tools Update yi indirip kuralım. Bu araç, Scaffolding templatelerini kullanma işini paket yönetim konsoluna komut ile yapmak yerine bir iki tıkta yapmamıza olanak sağlıyor. Hemen kullanıma bakalım.

Yeni bir Mvc3 projesi açıyoruz. Sonrasında urun adında bir model oluşturuyoruz.

    public class urun
    {
        public int id { get; set; }
        public string adi { get; set; }
        public int stok { get; set; }
    }

Modelimizi yazdıktan sonra ctrl+shift+b ile projemizi derliyoruz. Solution Explorer da bulunan Controllers klasörüne sağ tıklayıp Add / Controller diyoruz. İşte bu açılan ekran yüklediğimiz Mvc3 Tools ekranı.


Okumaya devam et Mvc 3 Tools Update ve Getirdikleri

Mvc ile jQuery Template Kullanımına Giriş – Video

Geçtiğimiz günlerde jQuery Template hakkında detaylı bir yazı yazmıştım. Bu videoda template olayını mvc ile birlikte kullanıp bilgilerimizi pekiştiriyoruz. Mvc kontrolümüzden gelen json veriyle işlemlerimizi yaptığımız bu videoda, templatenin artılarınada değiniyoruz.

Videoyu daha kaliteli izlemek için buradan indirebilirsiniz.

Konuyla ilgili adresler;

  1. http://weblogs.asp.net/hajan/archive/2010/12/15/jquery-templates-with-asp-net-mvc.aspx
  2. http://weblogs.asp.net/hajan/archive/2010/12/13/jquery-templates-tmpl-tmplitem-and-template.aspx
  3. http://weblogs.asp.net/hajan/archive/2010/12/13/jquery-templates-in-asp-net-introduction.aspx
  4. http://api.jquery.com/jQuery.template/
  5. http://stephenwalther.com/blog/archive/2010/11/30/an-introduction-to-jquery-templates.aspx

Projeyi buradan, videoyu buradan indirebilirsiniz.

Mvc projesinde jQuery Ajax Kullanımı – Video

Mvc projemizde jQuery ajaxı kullanarak, bir içeriğin altına yorum ekleme ve silme işlemini gerçekleştireceğiz. Bu işlemin bize kazandırdıklarını, mvc ile uygulama geliştirmenin bize kattıklarınıda anlamaya çalışacağız. Umarım faydalı olur.

Videoyu daha kaliteli izlemek için buradan indirebilirsiniz.

Projeyi buradan, videoyu buradan indirebilirsiniz.

Mvc Scaffolding’ e Giriş – Video

Scaffolding ile çok hızlı ve kontrollü bir biçimde proje geliştirebilirsiniz. Video da anlattıklarımı burada ki kaynaktan öğrendim, zaten Steve Sanderson abimizin aleti bu :) Takip etmenizide öneririm. Aklıma gelmişken videoda veritabanın scaffolding tarafından oluşturulduğunu söylüyorum fakat bu yanlış, veritabanını entity framework oluşturuyor ;) Video da bir önceki video olarak bahsettiğim videoya Ado.Net Code – First (Ctp5) – Video adresinden ulaşabilirsiniz. Günlüğümde scaffolding ile ilgili diğer yazılara buradan ve buradan ulaşabilirsiniz.

Steve Sanderson‘ unun burada ki ve MIXX 11de ki videosunu izlemenizi şiddetle tavsiye ederim.

Video çekme olayını çok seviyorum fakat beni çok yoruyor. Kendi başınıza ekrana bakarak bir şeyler anlatmaya çalışıyorsunuz. Çoğu zaman aynı şeyleri defalarca tekrar ediyorsunuz, bu da konsantrenizin tamamen bozulmasına sebep oluyor. Sınavlarda bildiğinizi unutmak durumuna bile kalıyorsunuz, en azından ben kalıyorum :) Umarım konuyu anlatabilmişimdir, hatalarım varsa affola :)

Projeyi buradan, videoyu buradan indirebilirsiniz.

.Net Mvc cephesinde ki bazı gelişmeler.

Konu çok olunca böyle bir başlık yazmayı uygun gördüm. Son zamanlarda özellikle web tarafında bir Mvc ve Entity dir gidiyoruz. Gün geçmiyor ki yeni bir şey çıkmasın, haliyle ipin ucu kaçtığında neyin ne olduğunu anlamak bir hayli güçleşiyor ve içinden çıkılmaz bir hal alıyor. Bu gelişmeleri maddeler halinde dilimin döndüğünce paylaşmak istiyorum.

  1. Ado.Net Entity ile bir model oluşturup bu model üzerinde veritabanı işlemlerimizi gerçekleştiriyorduk. Entity ile varolan vt yi modelleye bildiğimiz gibi model den de vt yi oluşturabiliyorduk. Bu yaklaşım entitynin bir nevi başlangıç noktasıydı. Zaman ilerledikçe problemler de beraberinde geldi. En başta modelimizi otomatik oluşturduğu için müdehale etmek bir hayli zordu ve müdahale sonunda eğer modelimizde değişiklik yapılmışsa sonradan eklemelerimiz sıfırlanıyordu, çünkü kodlar yeniden oluşturuluyordu. Ayrıca çoğu zaman hiç kullanmayacağımız methodlar boşuna yük oluyordu. İşin birde doğrulama (validation) boyutu vardı ki takla üstüne takla atmak gerekiyordu. Modeli ben yazacam arkadaş, hakimiyet bizde olacak ! Modele hakim olamadığınız durumlarda başlarda güllük gülistanlık olan işlemler ilerde çok can sıkıcı ve içinden çıkılmaz durumlara yol açıyor. Allah’ tan code-first yaklaşımıyla bu isteklerimiz yerine geliyor. Modelimizi istediğimiz gibi yazabiliyoruz, doğrulama işlemlerini basitçe çözebiliyoruz ve tek hakim biz oluyoruz ama yine eksiklikler var, validation için ekstra classlar yazmamız gerekiyor. Şimdi elimizde 2 tane seçenek bulunuyor. Entity Data Model (edm) ve Code-First. Burada ki video da edm den kod oluşturucular (code generator) tarafından code-first bir modelin nasıl oluşturulup kullanıldığını anlatmaya çalışmıştım, yani emd yi kullanarak code-first modelimizi oluşturabiliyoruz. Diğer bir durum ise edm yi hiç işe katmayıp model sınıflarımızı yazıp veritabanımızı bu modelden oluşturmak. Bu seçenek kontrolün tamamıyla elimizde olduğu tek seçenek. Özetleyecek olursak Ado.Net bize şu yolları sunuyor, direk Edm kullanımı, edm den model oluşturma ve edm yi işe hiç katmadan direk modeli yazıp kullanmak.
  2. Paket yönetim konsulu (Package Manager Console) Son zamanlar da yine Microsoft cephesinin üzerinde epeyce durduğu bir konu paket yönetim konsolu. Amacı belli kaynaklardaki özellikle açık kaynak kodlu (open source) projeleri, kolaylıkla çalıştığımız projeye eklememize olanak sağlıyor. Örneğin projemize facebook connect yada x bir ekstra mekanızma (:D) eklemek istediğimizde arayıp bulmamıza gerek kalmadan bir komutla indirip projemize ekleyebiliyoruz. Temel komutlar burada güzel bir şekilde listelenmiş. Nuget projesi şu anda en büyük ve popüler açık kaynak paket deposu. Şu anda 907 adet paket hali hazırda kullanılmak için bekliyor. İndirilen paketler proje dosyalarının bir üst dizininde packages klasörünün içerisinde depolanıyor ve referans olarak projenize ekleniyor.
  3. mvcScaffolding Bu yapıyı yukarıda bahsettiğimiz paket yönetimini kullanarak mvc projenize ekleyip kullanabilirsiniz. Nedir bu scaffolding diye soracak olursanız Crud (Create, read, update ve delete) işlemlerini 1. maddede bahsettiğimiz modelimize uygun bir şekilde, gerekli olan yapıyı ve formları bizim yerimize otomatik olarak oluşturan açık kaynak bir araç. Steve abimiz konuyla ilgili tüm bilgileri blogunda anlaşılır bir şekilde paylaşıyor, ayrıca burada ki videosunu sonuna kadar izlemenizi şiddetle tavsiye ediyorum. Akıllıca tasarlanmış bir model üzerinden çok hızlı bir şekilde saat gibi işleyen projeler yapabilirsiniz.

Dipnot: .Net ile web projesi geliştirmek isteyen arkadaşlarımız var fakat nereden başlayacakları konusunda fikir sahibi değiller. Bunun en büyük sebebi .net tarafında iki türlü geliştirme şeklinin varlığı. Bir tarafta webForm diğer tarafta mvc. Mvc sadece .net de değil diğer web geliştirme ortamlarında da oldukça popüler bir tasarım deseni oldu. Benim konuyla ilgili fikrim direk mvc ile başlamaktan yana sebebi ise şu; webform da bir sürü kontrol bulunuyor ve bu kontrollerin bir sürü özellikleri bulunuyor. Kontrollerin çalışma mantığını anlamak, kullanım yerlerine ve şekillerine hakim olana kadar epeyce zamanınız geçer. Çoğu kişide hiç alışık olmadığı bu yapı karşısında pes eder ve bırakır. Mvc de ise html elemanları ile iş yapıldığından zaten önceden bir aşinalık söz konusudur. Örneğin; input, textarea, selectbox, form gibi.. Php, asp vb.. diğer dillerde nasıl kullanılıyorsa aynen burada da kullanabiliyorsunuz. Enerjinizin %90 lık kısmını model ve kontrol kısmına vermeniz durumunda öğrenilmesi ve kavranılması daha kolay gibi geliyor bana.. Özellikle mvc3 ile birlikte eksiklerin giderilmesi, yeni özelliklerin eklenmesiyle çok da zevkli bir uygulama geliştirme imkanınız oluyor. Günün sonunda bir tasarım desenine uygun uygulamada geliştirmiş oluyorsunuz.

Ado.Net Code – First (Ctp5) – Video

Bu videoda Code-First yapısına ve modelimizin doğrulama (validation) işleminin nasıl gerçekleştirildiğine, hem kullanıcı hemde sunucu tarafında bakacağız. Bunların yanında Entity Data Model den veritabanımıza tablolarımızı oluşturup, ilişkilerine inceden bakacağız. Umarım faydalı bir video olur.

Örneği buradan indirebilirsiniz.

Ado.Net Code-First CTP 5 Download

Kaynaklar;

http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
http://blogs.msdn.com/b/adonet/


İlgili diğer videolar;

Ado.Net Entity framework’ e giriş – Video
Mvc ye giriş – Video

1 senenin sonunda..

Bildiklerimi herkesin anlayacağı tarzda yazmaya gayret gösterdiğim günlüğümde 2010 yılında köklü bir değişikliğe gittim. Hep klasik asp ile kodladığım sistemi kullanıyordum fakat bir değişiklik yapıp WordPress’ e geçiş yaptım. İyiki de yapmışım gayet memnunum. Aşağıda sitemle ilgili ziyaretçi bilgilerini veriyorum. Rakamların iyi yada kötü olduğu konusunda bir fikrim bulunmuyor, açıkçası çokta umurumda değil. 100bin fuzuli kullanıcı yerine 100 tane yazdığımı okumak için gelen kullanıcı benim için çok daha önemli. Bu vesileyle tüm herkese teşekkür ediyorum. Okumaya devam et 1 senenin sonunda..

Ado.Net Entity framework’ e giriş – Video

İlk videomuzda MVC konusuna bir giriş yapmıştık. Model kavramına çok fazla değinmemiştik, bu video da ado.net entity framework 4.0 ile modelimizi oluşturup, insert, delete, update ve select işlemlerinin nasıl yapıldığına göz atıp, mvc bilgilerimizi tekrar gözden geçiriyoruz.

Videoda ki uygulamayı buradan indirebilirsiniz.

MVC3 & Razor View Engine

Geçmişte mvc ve entity ile birlikte bazı çalışmalarım oldu fakat bazı noktalarda ki yetersizliğinden dolayı bıkkınlık geldi ve ilgilenmeyi bıraktım. Aradan biraz zaman geçtikten sonra Visual Studio 2010, framework 4.0 ve mvc 2 duyruldu açıkcası geçmişteki kötü imajı nedeniyle yine ilgilenmedim. Şimdi ise Mvc 3 beta çıktı ve her zaman ki gibi yine gündemde. Uzun bir süre dirensem de, izlediğim bir video dan sonra tekrar ilgimi çekmeyi başardı. Bunun en büyük nedeni razor view engine esasında razor değil view engine mekanızması beni çok fena cezbetti. Asp.Net tarafında herkesin hayal ettiği, özlediği bir yapıydı bu.

İlk olarak web matrix de cshtml uzantısıyla gördüğüm razorun açıkcası ne olduğu anlamamıştım. Şimdilerde kendi çapımda yaptığım ufak bir projede kullanmanın tarifsiz keyfini çıkarıyorum. Hemen bir örnekle razor view engine kod yapısına bir göz atalım.

Tasarım tarafında basit bir for döngüsü .aspx

    <%for(int i=0;i<5;i++){%>
      <li><%=i%></li>
    <%}%>

Aynı kodun .cshtml versiyonu yani razor

    @for(int i=0;i<5;i++){
        <h1>@i</h1>
    }

Görüldüğü üzere @ işratiyle başlıyor ve html kodlarmızı ekstra bir işlem olmadan içinde kullanabiliyoruz. Bu sayede çok hızlı ve düzenli bir şekilde kodlarımızı yazabiliyoruz.

Şuanda bulunduğuz sayfa <strong>@Request.Url</strong>

Ne kadar basit değil mi ? Razor’ un diğer bir özelliği ise bu mekanızmaya geçişin kolay olması ve ekstra kod bilgisine ihtiyaç duyulmaması. jQuery ile hayatımıza giren $ işaretinden sonra şimdide @ işareti giriyor :)

Şuanda beta olmasından dolayı kod renklendirme (syntax highlighter) ve otomatik tamamlama (intellisense) olayı bulunmadığından biraz zorluk çekebilirsiniz. Ama size şunu ısrarla söylemek isterim ki kesinlikle bir deneme yapın ve bu yapıyı gözlerinizle görün. İlerleyen günlerde razorun yeteneklerine daha yakından bakıp, küçük bir uygulama yapacağız. Şimdilik bu kadar :)