Entity Framework - Linq To Entity

Bu yazıdan faydalanabilmeniz için bilmeniz gerekenler:
Nesne Tabanlı Programlama
Basit Sql Sorguları Yazabilme

Bu başlık altında daha önce Mssql server ile  oluşturulmuş bir veritabanının Entity Framework ile nasıl modellendiğini inceleyeceğiz.
Bu yapıdan biraz bahsetmek istiyorum. EF veritabanı tablolarını baz alarak .edmx uzantılı bir model oluşturur. Bu model içerisinde sizin veritabanı işlemlerinizi (Select, Insert, Update vb) Object Oriented Programming (Nesne Tabanlı Programlama) ile oluşturduğu sınıfları ve metotları içerir. Yani model içerisinde ihtiyacınız olan temel sınıfları ve metotları oluşturur. Bu yapı sayesinde bir tabloya veri eklemek istediğinizde o tabloya ait sınıftan yeni bir nesne türetip, o nesneye ait değişkenleri doldurup kaydedebilirsiniz. Dolayısıyla hiç sql tümcesi kullanmadan kayıt ekleyip, silip sorgulayabilirsiniz.

Dikkat etmemiz gereken Model oluşturmadan önce veri tabanımızın doğru ilişkilendirilmesi ve yapılandırılmasıdır. Örneğin birincil anahtarı olmayan bir tabloyu modellemeye çalışmanız sıkıntı doğurabilir.

Adımlar :

1- Yeni bir uygulama açmak yada var olanın üstünde çalışmak. Desktop veya web olabilir.

2- Solution Explorer altında modelleme yapacağımız proje üstüne gelip sağ tıklayıp Add-->New Item-->Data-->ADO.NET Entity Data Model. Dil farketmez.

3- Choose Model Contents menüsünde 2 adet model var. Birisi Generates the model from a database diğeri empty model. Farkları birisinde veritabanı hazır bu veritabanına göre Model çıkarıyor. Diğeri First Code mantığı ile çalışıyor. Buna farklı bir gün değineceğim. Biz Generates the model from a database i seçiyoruz.

4- Gelen ekrandan Veritabanımızı ve bağlantı ayarlarımızı yazıyoruz ve ardından Next.

5- Gelen ekranda veritabanımıza ait tabloları Stored Procedure leri seçiyoruz ve finish diyoruz. Burada default gelen checkboxlar önem arzediyor.İlk aşamada bunların çok önemi yok fakat biraz bahsedelim. Pluralize or singularize generated object names kısmı oluşturulacak nesnelerin adlarının tekilleştirilip yada çoğullaştırılması ile ilgili. Oluşuturulan nesnelerin isminin sonuna -s getiriyor. Kullanımla alakalı olduğunu düşünüyorum. Diğeri foreign keylerin modele aktarılması ile ilgili. Default gelen şekilde kullanmanız olağandır.
Modelimizi oluşturduk Select Insert ve Update yapılarını EF ile nasıl hallediyoruz biraz onu inceleyelim. Bu yapıyla ilişkili olarak Linq to Entity yapısından biraz bahsedeyim. Bu yapı bize nesneler, listeler, tablolar içerisinde dolaşmamızı, verileri işlememizi ve sql tümcelerini olduğu gibi yazmaktan kurtaran bir yapıdır. Aslında bahsettiğimiz yapılar programcı dostu gibi görünsede özünde programcıyı tembelliğe ve güvensizliğe sevk etmektedir.(Kişisel Düşüncem) Modelin arka tarafını inceleme fırsatınız tamamıyla yok fakat inceleyebildiğim kadarıyla tabloları birer nesne, kolonlarıda tipine göre nesnenin birer elemanları yapıyor ve gerekli işlemler için prosedürleri yazıyor.Basit linq örnekleri aşağıdadır. Kodları yazmadan önce referansları vermelisiniz.

using System.Linq;
using System.Data.Linq.SqlClient;
using System.Data.,;
Ayrıca çalıştığım yerdeki veritabanını kullandığım için hayali bir müsteri (Customer) tablosundan çalışacağız. Yani oluşturduğumuz modelde tabloları seçerken Customer adlı bir tablom vardı diyelim.

Table -> Customer
      [CustomerID]
      [CustomerName]
      [CustomerAdress]


1- Sorgulama yapmak için ya global yada yerel bir nesne türetmeliyiz modelimizden. Select
 Aşağıda item Customer tablosundan gelen tüm verileri barındırmaktadır. item. dedikten sonra hepsine ulaşabilirsiniz.

Entities YeniEntities = new Entities();
         
             var query =from item in YeniEntities.Customer
                              where item.CustomerID==1234
                              orderby item.CustomerName ascending
                              select item;

2- Veri Ekleme  Insert

Aşağıda Customer adlı sınıftan yeni bir nesne oluşturduk. Nesnenin değişkenlerini doldurduk ekle metoduyla ekleyip kaydettik.

            Customer objCust =new Customer  
                {
                    CustomerID= 1231321,
                    CustomerName ="isa ataseven",
                    CustomerAdress="Ankara"
                };
                objCust.Customer.AddObject(objCust );
                objCust.SaveChanges();

3- Veri Güncelleme   Update
Aşağıda ise CustomerID'si 1231321 olan ilk müşteriyi bulduk adını ve adresini değiştirdik sonra kaydettik.

Customer obj2 = Entities .Customer .First(k => k.CustomerID == 1231321);
                obj2.CustomerName = "ottoMAN";
                obj2.CustomerAdress= "istanbul";
obj2 .SaveChanges();

Bugün yazacaklarım bu kadar umarım faydalı olur. Daha detaylı sorular için mail atabilirsiniz.

Yorumlar

Popüler Yayınlar