Entity Framework Nedir?

.NET 3.5’ten önce, biz (geliştiriciler) genellikle temel veri tabanı uygulama işlemleri yapmak için ADO.NET teknolojisini kullanırdık. Ado.net teknolisinde bir veri tabanı işlemi için öncelikli olarak database bir connection oluşturup bağlantı açar daha sonra sonrasında bir command oluşturup bir komut gönderir ve ardından komut sonrası veri göndermek veya almak için bir dataseti oluşturur ve dataset ile dönen verileri data table da tutup nesnelere dönüştürürdük.  Tabikide sonrasında tüm bu işlemleri tersini yapardık dataseti boşaltır, connectionı kapatırdık. Göründüğü üzere bu iş oldukça zahmetli ve hataya açık bir süreçti. Bu nedenlerden dolayı Microsoft, uygulamanız için veritabanıyla ilgili tüm bu etkinlikleri otomatikleştirmek için “Entity Framework” adlı bir framework sağlamıştır.

Ado .Net Bağlantı Örneği

static void Main(string[] args)
{
     SqlConnection conn = new SqlConnection(); //Bağlantı oluşturuluyor.
     conn.ConnectionString = "Server=.; Database=DBPersonel; Trusted_Connection=True;";
     conn.Open();
     //SQL Data Adapter ile (Veritabanına komut gönderiyoruz.)
     SqlDataAdapter adaptor = new SqlDataAdapter("SELECT * FROM tbl_Personel",conn);
     DataTable dt = new DataTable(); //DataTable oluşturuyoruz.
     adaptor.Fill(dt); //Adaptor ile gelen veriyi DataTable taşıyoruz.
     DataSet ds = new DataSet();
     ds.Tables.Add(dt); //DataTable Set ile atama yaparak satırlar arasında dönüyoruz.
     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
     {
       Console.WriteLine(ds.Tables[0].Rows[i]["PersonelMail"].ToString());
     }
     conn.Close();
}

Entity Framework Nedir?

Entity Framework, Microsoft tarafından desteklenen .NET uygulamaları için açık kaynaklı bir ORM çerçevesidir.

Entity Framework, geliştiricilere verilerin depolandığı temel veri tabanı tablolarına ve sütunlarına odaklanmadan etki alanına özgü sınıfların nesnelerini kullanarak verilerle çalışmasına olanak tanır. Entity Framework ile geliştiriciler, verilerle ilgilenirken daha yüksek bir soyutlama düzeyinde çalışabilir ve geleneksel uygulamalara kıyasla daha az kodla veri odaklı uygulamalar oluşturabilir ve sürdürebilir.

ORM (Object Relational Mapping) Nedir?

ORM, İlişkisel veri tabanı ile nesneye yönelik programlama (OOP) arasında bir köprü görevi gören araçtır. Basite indirgemek istersek nesnelerimizi ilişkisel veri tabanındaki tablomuza bağlayan ve veri alışverişini bizim için yapan bir metottur. ORM tekniği belli bir programlama diline bağlı değildir ve her OO dilinde yazılabilir. Böylece veri tabanı işlemlerinin SQL kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar.

Veri tabanına yapılacak CRUD (Create Read Update Delete) işlemlerini EF aracı tarafından algılanır ve yapılacak olan işlem SQL kodlarına dönüştürülür. Bu işleme “Code Generating” denir. EF kullanan geliştirici Linq kullanarak sorgu yazabilir.

Avantajları

  • OOP olarak kod geliştirmeye imkan sağlamaktadır.
  • SQL bilmeden bir veri tabanına bağlanabilir ve SQL ile ilgili birçok işlemi rahatlıkla yapabilmek.
  • Herhangi bir Database bağımlılığı yoktur.
  • Oldukça esnek bir yapı sağlamaktadır. Yani Oracle kullanıyorken bir anda MS SQL i kullanabiliriz.

Dezavantajları

  • Performans. Bir ADO.Net kadar hızlı çalışmamaktadır.
  • Database den bilgi alış-verişi sırasında kontrol %100 bizde değildir. Bazen oluşturulan SQL ifadelerinde sorun çıkabilir veya biz daha güzel ve hızlı çalışacak SQL ifadeleri yazabileceğimiz durumlar olabilir. Fakat tüm SQL ifadelerini Code Generating ile kendi oluşturduğu için bu bir dezavantajdır.
  • Veri tabanı bağımsızdır. Fakat uygulama tarafındaki nesneler ile veri tabanındaki nesneler birbirine MAP edildiği için nesne bağımlılığı vardır.

Entity Framework Mimarileri

Entity Framework ile 3 farklı mimariyi den oluşur. Bu mimariler;

  • Model First (New Database)
  • Database First (Existing Database)
  • Code First (New Database)

Model First (Önce Model – Yeni Veritabanı Oluşturma Visual Studio İle)

Bu yaklaşım, sıfırdan bir veritabanı oluşturarak projeye başlanması gereken durumlar için ideal olabilmektedir. Kod yazmadan ya da serverda fiziksel database ile ilgilenmeden, tamamen entity model üzerinden veritabanı oluşturmak için kullanılan yaklaşımdır. Entity user interfacesi üzerinden modellediğiniz verilerinizi generate ettiğinizde hem database tarafında hem de kod tarafında otomatik olarak oluşurlar.

Database First (Önce Veri tabanı – Var Olan Veritabanını Kullanma)

Bu yöndem önceden oluşturulmuş olan veritabanını projeye model olarak bağlayarak gerekli classlarımız Entity Framework tarafından oluşturulmaktadır.

Detaylı bilgi ve örnek için aşağıdaki linki inceleyebilirsiniz.

https://www.entityframeworktutorial.net/entityframework6/create-entity-data-model.aspx

Code First (Önce Kod – Yeni Veritabanı Kod Yazarak)

Bu yöntem classlar ve mapping kodları yazılımcı tarafından oluşturulur. Daha sonra veri tabanı bu classlardan türetilir ve modellemenin durumuna göre tekrardan şekillenebilir.

Code-First yaklaşımında, önce veritabanınızı tasarlamak ve ardından veritabanı tasarımınıza uygun sınıfları oluşturmak yerine uygulamanızın etki alanına odaklanır ve etki alanı varlığınız için sınıflar oluşturmaya başlarsınız. Aşağıdaki şekil, kod öncelikli yaklaşımı göstermektedir.

Yukarıdaki şekilde görebileceğiniz gibi, EF API, etki alanı sınıflarınıza ve yapılandırmanıza göre veritabanını oluşturacaktır. Bu, önce C# kodlamaya başlamanız gerektiği ve ardından EF’nin kodunuzdan veritabanını oluşturacağı anlamına gelir.

One comment

Comments are closed.