Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: ado.net ef ado.net entity framework csdl eksik entity framework hatalı mdl metadata designer mpdl ssdl vs.net 2010 İnceleme Sefer Algan
 
YAZI HAKKINDA
Türü : Serbest Köşe (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : İnceleme
Yayınlanma Tarihi : 10.8.2009
Okunma Sayısı : 37094
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 28.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 28.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 28.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 28.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Entity Framework'un Eksik ve Zayıf Yönleri
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

ADO.NET Entity Framework  bildiğiniz gibi Visual Studio .NET 2008 SP 1 ile kullanıma girmişti. .NET 4.0 ile de EF içerisinde bir çok yenilik bekliyoruz, ancak mevcut haliyle EF içerisinde bir çok eksiğin olduğunu söyleyebilirim. Uzun süredir EF'nin hangi tip projelerde kullanılabileceği üzerine araştırma yapıyorum. Bu yazıda EF'nin eksiklikleri ve yapamadıklarından en temel olanlarını paylaşmak istiyorum;

Dinamik Entity Yaratılamaması

EF'nin çalışması için statik olarak bir metadata (csdl,ssdl vs bilgilerini içeren dosya) dosyasına ihtiyaç duyması bazı projeler için büyük dezavantaj. Örneğin bir Framework geliştiren firma iseniz ve uygulamalarınızın çok farklı veri senaryolarında çalışmasını garanti etmek istiyorsanız statik bir metadata dosyası yaratamazsınız.  Bu işlemin dinamik olması ve Entity'lerinde hard-coded bir şekilde yaratılmaması gerekir.  Söz gelimi, otomatik olarak ekranların üretildiği bir UI Frameowrk'u geliştirmek istediğinizda  veri erişim altyapısında EF kullanamazsınız, çünkü dinamik olarak Entity nesneleri oluşturulamıyor. Bu da EF'nin daha çok "data store'u" belli olan ve şemasıda açıkca belirlenmiş projelerde kullanımını ön plana çıkarıyor.  Aslında  metada xml'lerinin dinamik olarak oluşturulması bir seçenek olarak önümüzde durmasına rağmen bu yöntem kulağı tersten tutmakla eş değer olacağı için bu yöntemi benimseyemiyorum.

Metadata Designer ile EF Özelliklerinin Uyumsuzluğu

EF'nin bir çok güzel ve ileri diyebileceğimiz özellikleri direkt olarak MetadaData designer aracı üzerinden belirtilememektedir. Örneğin bir Sütun'un özelliklerini belirleme gibi. Bu durumlarda metada'nın  SSDL kısmı manuel olarak elle değiştirilmektedir. Bunun gibi bir çok özelliği aktive etmek için manuel değişiklik yapma olanağı güzel ancak bu durumda  "Update Model Wizard" kullanıp  SSDL'i güncellemek isterseniz yaptığınız manuel değişikliklerin tamamı silinecektir.  EF geliştiricilerinin bu problemi aşması için XML Inheritance gibi bir kavramı ortaya atıp  "auto generated xml" ile  programcının değiştirdiği kısımların soyutlanması gerekiyor. Aynen  C# class'larında oluğu gibi  Partial XML gibi bir yapıya ihtiyaç var. İleriki versiyonlarda bunun düzeleceğine eminim. 

LINQ To Entitis Sorgularının Çalışıp Çalışmayacağını bilememe

Bazı LINQ To Entity sorgularında ister istemez .NET'in sunduğu kütüphaneleri kullanmak istiyoruz. En basitinden String sınıfının veya Datetime sınıfının üye elemanlarını kullanıyoruz. Örneğin;

from c in ctx.Siparisler
where c.SiparisNo ==3
select c.SiparisTarihi.ToShortDateString();

İç güdüsel olarak ToShortDateString metodunun çalışmasını bekliyoruz ama bunun çalışma zamanında desteklenmeyen bir özellik olduğunu anlıyoruz.  Derleme aşamasında bunun belirli olması geliştirme eforu ve zaman kaybı açısından önemli olduğunu düşünüyorum. Daha güzel Expression Tree yapısı bekliyoruz EF takımından.

DataContext.Refresh metodu beklenen şekilde çalışmıyor..

Özellikle  eş zamanlılık(concurrency) kontrolü gerektiren noktalarda Entity değişimlerini db'ye göndermeden önce  Refresh metodu ile DataContext üzerinde yüklü Entity'lerin yeniden yüklenmesini sağlıyoruz. Bu işlem Refresh metodu ile yapılabiliyor.  Diyelimli DataContext üzerinde Müşteri  listesi ve ona bağlı Müşteri Sipariş entity listesi var. Eğer Sipariş listesi müşteri ye bağlı olarak DataContext'e yüklenmiş ise  Refresh metodunu çağırdığınızda sadece Müşteri bilgilerini yüklüyor, diğer bağlı Entity'lerin yüklenmesi için bir mekanizmas sunulmamış. Aslında olması gereken bütün Entity'lerin yüklenmesidir. Yada bu opsiyonun başka bir şekilde olabilmesidir.

Gerçek Manada Lazy Loading Yok..

EF içerisinde Lazy Load denilen bağlantılı tablolardaki Entity değerlerine erişirken bu verilerin arkada otomatik olarak yüklenmesi yoktur. Bunun yerine manuel olarak Load isimli metotlar çağrılır. Bunada genel olarak deferred loading (ertlelenmiş yükleme) yada "explicit lazy loading" denilmekte. EF 4.0 ile birlikte gerçek Lazy Loading geleceği söyleniyor.

Diğer Notlar :

Her ne kadar EF'de yukarıda saydığım eksiklikler olsada temel manada bir çok özelliği ile birlikte oldukça kullanışlı bir altyapı olduğunu söyleyebilirim.  Yakın bir zaman içerisinde .NET 4.0'ında çıkacağını varsayarsak (bu eksiklerin bir kısmının giderileceğini düşünüyorum) şimiden EF'ye adapte olmak ve projelerde kullanmaya başlamak yararlı olacaktır.  

Makale:
Entity Framework'un Eksik ve Zayıf Yönleri İnceleme Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
4
2009
LinqToSql başlayan ve daha sonra yükselttikten sonara yolda bırakıp Entity Framework ile devam eden bir alt yapı kullanmak yerine NHibernate gibi bir orm tool unu kullanmak bence daha iyi olur.
AĞU
14
2009
Sefer hocam, ASP.NET MVC Framework için yazılmış bazı bileşenleri ve NHibernate içinde bulunan LINQ desteğini incelerken az biraz expression tree yapısını inceleme fırsatım olmuştu. LINQ 2 Entities deki yapının bahsettiğiniz şekilde geliştirilmesi gelen sorgu sonucunun .NET ile tekrar manupule edilmesi ile ancak tam desteklenebileceğini düşünüyorum. Bu ise esneklik açısından bir artı olmasına rağmen performans açısından bir eksi olarak bize yansıyor. Buna rağmen bu özelliği de bir yenilik olarak zaman içinde göreceğimize eminim. Klasik pazarlama tekniklerini sıkça uygulayan Microsoft'un "Yenilikleri zamana yayarak uzun sürede karlılığı devam ettirme" gibi bir taktiğinden yararlanacağı ise tecrübe ile sabit. Yazılırınızı heyacan ile bekliyoruz.
AĞU
13
2009
Performans açısından EF değerlendirme açısından bizi bilgilendirebilirmisiniz. (EF vs LinqtoSql vs Ado.net)
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor