Başlıklar
·
EntityFramework Nedir
·
ORM Nedir
·
EF Modelleri
o
Code
First
o
Model First
o
Database First
·
Neden Entity Framework kullanmalıyız?
Entity Framework Nedir?
ADO.Net ile veri tabanı kodu yazmak ve yönetmek,
sıkıcı ve monoton bir iştir, yazılımla uğraşan herkesin en büyük sıkıntısı da
bu olsa gerek; işte bu noktada Microsoft bizim için veri tabanıyla ilgili
faaliyetleri otomatikleştirmek için “Entity Framework” adı verilen bir O/RM
framework’ünü geliştirdi. Entity Framework , Microsoft tarafından desteklenen
.NET uygulamaları için bir açık kaynak ORM framework’üdür. Geliştiricilerin,
veri tabanı tablolarına odaklanmadan belirli alanlara özgü sınıf nesnelerini kullanarak
verilerle çalışmasını sağlar. Entity Framework ile geliştiriciler, veriyle
uğraştıklarında soyutlamayı daha üst seviyede yapabilir ve geleneksel
uygulamalarla karşılaştırıldığında daha az kodla veri odaklı uygulamalar
oluşturabilir ve koruyabilir.
ORM Nedir?
Yukarıdaki şekle bakıldığında uygulama ORM e bağlı
olduğunu görebiliriz. Database le direk olarak herhangi bir bağlantısı söz
konusu değildir. Peki, burada bizim yapmak istediğimiz Database işlemlerimiz
nasıl oluyor da SQL ifadesi yazmadan gerçekleşiyor? Uygulama tarafında oluşan
nesneler üzerinden biz Database işlemi yaptığımızda ORM tarafından bu işlem SQL
ifadesine dönüştürülüyor. Bu işleme Code Generating işlemi denir. Tüm ORM
araçları aynı işlemi yaparlar. Mesela siz uygulamanızda bir nesne üzerinden bir
tabloya kayıt ekleme işlemi yapmak istediğinizde ORM otomatik olarak insert SQL
ifadesini oluşturup Database e gönderir. Bu sayede sizin SQL bilmenize gerek
kalmamaktadır.
ORM’lerin başka bir kazancı ise veri tabanından
bağımsız çalışabilmeleridir; her ne kadar SQL dili standart olsa da veri tabanı
sistemleri ve versiyonları arasında farklılık göstermektedir (bir veri
tabanında FIRST kullanılırken başka bir veri tabanında TOP sözcüğü
kullanılabilir), bu yüzdende en temel seviyede sql yazmadığınız sürece farklı
veri tabanı platformları arasında uyum sağlamak zor ve zahmetli bir iştir. Bu
bağlamda ORM Araçları veri tabanı nesnelerini uygulama tarafında
nesneleştirdiği için bir standart sağlarlar.
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.
- Farklı platformlarda farklı farklı ORM araçları mevcuttur arkadaşlar. Mesela Java’da Hibernate, Microsoft’ta, EntityFramework… Aynı zamanda Hibernate altyapısını kullanan ve .Net platformu için nHibernate ORM aracı vardır. Daha birçok araç mevcuttur. Fakat temelinde hepsi ORM mantığı ile çalışırlar.
Entity Framework ile 3 farklı yöntem ile proje
geliştirilebilir.
Code First
Model First
Database First
Code First
Veritabanı ile Programlama dili arasında bağ kuran bir
tekniktir. Projenizde veritabanı işlemlerinizi mümkün mertebe Visual Studio
tarafında kod yazarak gerçekleştirmenizi sağlayan bir yaklaşımdır. Bu yaklaşım
sayesinde veritabanı arayüzü ile yazılımcı arasında ilişki minimize
edilmektedir.
Code First yapısında programlama dilindeki “class”
yapıları veritabanındaki “tablo” yapılarına, “property” yapıları ise
veritabanındaki “kolon” yapılarına denk gelmektedir.
Ayrıca Attribute’lar sayesinde veritabanı yapılarına
Validationlar uygulanabilmekte ve kolonlara belirli şartlar veyahut
kısıtlamalar koyulabilmektedir.
En önemlisi ise projenizdeki modelin oto kontrolünü
elinizde hissetmenize ve tam hakimiyetle istediğiniz gibi kullanmanıza olanak
tanıyor. Database First yaklaşımı Linq To SQL yapısındaki gibi sürükle bırak
mantığıyla çalışmakta ve herşeyi otomatik halletmektedir.
Model First
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
Database First , yeni bir entity
model oluşturmak için, adından da anlaşılacağı üzere önceliği veritabanı olarak
görür. Yani modeli, hazırda bulunan bir veritabanından oluşturur. Eğer uzun
zamandır kullanılan bir veri tabanı üzerinde çalışacak ve bu veritabanı için
bir model oluşturacaksanız bu yaklaşımı tercih etmelisiniz. Bu yaklaşımda çalışma
yöntemi olarak daha çok server tarafında işlemler yapılır ve değişiklikler
modele aktarılır.
Neden Entity Framework
kullanmalıyız?
- · Linq to sql ile veya entity framework ile kolaylıkla select * from tablo_adi gibi bir sorgunun sonucunu kolonları ile class olarak alabilirsiniz.
- · Asp.net'de Strongly Type .net 4.5 ile gelen Eval(“KolonAdi”) yerine intellisense desteği ile Item.KolonAdi Yazmamızı sağlayan güzellik. Tabi burada Repeater'ın ItemType="" özelliğine bağlanan verinin tipini yazmanız gerekiyor. Örneğin bir öğrenci tablonuz varsa ItemType="Students" şeklinde yazdığınızda <%#item.name%> şeklinde veriyi basabilirsiniz.
- · Oluşturma, Okuma, Güncelleme, Ekleme, Silme Cruid (Create, Read, Update, Insert, Delete)işlemlerini daha az kod ve daha hızlı bir şekilde yaparsınız.
- · Web Servis geliştiriyorsanız DataSet/DataTable Dönüş yapamazsınız. Donus değeriniz fazla büyük olur. POCO oluşturup datasetdeki verileri ona doldurup göndermeniz gerekir. EF ile direk tabloyu dönebilirsiniz.
- · Entity framework ve linq to sql de kodlar t-sql dönüştüğünde Sql Injection'ı önlemek için parametre kullanır ve bunun önüne geçer
- · Performans. Tabi bu durum göreceli bir durum ancak. Entity framework sahip olduğu cache özelliği sayesinde sorgu ve sonuçları bellekte ya da Redis gibi dağıtım sistemlerde cachelemenize olanak sağlar. (Entity Framework Second Level Cache)
- · Asp.net mvc de cruid işlemleri için entity framework ile bir çözüm mevcut. Control eklerken “MVC5 controller with views, using entity framework” seçeneğini seçtiğinizde sizin için Insert Update Delete ve List işlemlerini hazırlar. Kısa sürede tablolarınız için gerekli kodları yazar ufak düzenlemeler ile her projede olan Cruid işlemlerini kolaylaştırmış olursunuz.
- · Generic Listler in faydaları. Linq veya entity framework kullandığında kodlar tekrar sorgulanabilirdir. Örneğin gelen datadan Lambda İfadeleri ile bunları Filtreleyebilir (Where), Sıralayabilir(OrderBy), istediğiniz kadarını alabilir(Take), İstediğiniz kadarını atlayabilir(Skip) bu ve bunun gibi işlemleri hızlıca yapabilirsiniz. Ado.Net ile bu işlemleri yapabilirsiniz ama önce klasik Ado.Net işlemleri yapıp sonra bunları oluşturacağınız bir Class'ın Listesi içine doldurmanız gerekir
Hiç yorum yok:
Yorum Gönder