Entity Framework 6'ya yükseltme
EF'nin önceki sürümlerinde kod, .NET Framework'ün bir parçası olarak gönderilen çekirdek kitaplıklar (öncelikli olarak System.Data.Entity.dll) ve bir NuGet paketinde gönderilen bant dışı (OOB) kitaplıklar (öncelikli olarak EntityFramework.dll) arasında bölünmüştü. EF6, kodu çekirdek kitaplıklardan alır ve OOB kitaplıklarına ekler. Bu, EF'nin açık kaynak yapılmasına izin vermek ve .NET Framework'ten farklı bir hızda gelişebilmesi için gerekliydi. Bunun sonucu, uygulamaların taşınan türlere göre yeniden oluşturulması gerektiğidir.
Bu, EF 4.1 ve sonraki sürümlerde sevk edildiği gibi DbContext kullanan uygulamalar için basit olmalıdır. ObjectContext kullanan uygulamalar için biraz daha fazla çalışma gerekir, ancak yine de yapılması zor değildir.
Mevcut bir uygulamayı EF6'ya yükseltmek için yapmanız gerekenlerin denetim listesi aşağıdadır.
1. EF6 NuGet paketini yükleme
Yeni Entity Framework 6 çalışma zamanına yükseltmeniz gerekir.
- Projenize sağ tıklayın ve NuGet Paketlerini Yönet... öğesini seçin .
- Çevrimiçi sekmesinde EntityFramework'ü seçin ve Yükle'ye tıklayın
Dekont
EntityFramework NuGet paketinin önceki bir sürümü yüklendiyse bu, bunu EF6'ya yükseltecektir.
Alternatif olarak, Paket Yöneticisi Konsolu'ndan aşağıdaki komutu çalıştırabilirsiniz:
Install-Package EntityFramework
2. System.Data.Entity.dll derleme başvurularının kaldırıldığından emin olun
EF6 NuGet paketinin yüklenmesi, System.Data.Entity başvurularını sizin için projenizden otomatik olarak kaldırmalıdır.
3. Ef Tasarım Aracı (EDMX) modellerini EF 6.x kod oluşturma kullanacak şekilde değiştirin
EF Tasarım Aracı ile oluşturulmuş modelleriniz varsa, EF6 uyumlu kod oluşturmak için kod oluşturma şablonlarını güncelleştirmeniz gerekir.
Dekont
Şu anda Visual Studio 2012 ve 2013 için yalnızca EF 6.x DbContext Oluşturucu şablonları kullanılabilir.
Mevcut kod oluşturma şablonlarını silin. Bu dosyalar genellikle edmx_file_name.tt> ve< edmx_file_name.Context.tt> olarak adlandırılır <ve Çözüm Gezgini'da edmx dosyanızın altına yerleştirilir. şablonları Çözüm Gezgini seçip Del tuşuna basarak silebilirsiniz.
Dekont
Web Sitesi projelerinde şablonlar edmx dosyanızın altına yerleştirilmeyecek, ancak Çözüm Gezgini içinde listelenecektir.
Dekont
VB.NET projelerde iç içe şablon dosyalarını görebilmek için 'Tüm Dosyaları Göster'i etkinleştirmeniz gerekir.
Uygun EF 6.x kod oluşturma şablonunu ekleyin. Modelinizi EF Tasarım Aracı açın, tasarım yüzeyine sağ tıklayın ve Kod Oluşturma Öğesi Ekle... öğesini seçin.
DbContext API'sini kullanıyorsanız (önerilen) EF 6.x DbContext Oluşturucu, Veri sekmesinde kullanılabilir.
Dekont
Visual Studio 2012 kullanıyorsanız, bu şablona sahip olmak için EF 6 Araçları'nı yüklemeniz gerekir. Ayrıntılar için bkz . Entity Framework alma.
ObjectContext API'sini kullanıyorsanız Çevrimiçi sekmesini seçmeniz ve EF 6.x EntityObject Oluşturucusunu aramanız gerekir.
Kod oluşturma şablonlarına herhangi bir özelleştirme uyguladıysanız bunları güncelleştirilmiş şablonlara yeniden uygulamanız gerekir.
4. Kullanılan tüm çekirdek EF türleri için ad alanlarını güncelleştirin
DbContext ve Code First türlerinin ad alanları değişmedi. Bu, EF 4.1 veya üzerini kullanan birçok uygulama için hiçbir şeyi değiştirmeniz gerekmediği anlamına gelir.
Daha önce System.Data.Entity.dll dosyasındaki ObjectContext gibi türler yeni ad alanlarına taşındı. Bu, EF6'ya karşı derlemek için using veya Import yönergelerinizi güncelleştirmeniz gerekebileceği anlamına gelir.
Ad alanı değişikliklerinin genel kuralı, System.Data.* içindeki herhangi bir türün System.Data.Entity.Core.*'a taşınmasıdır. Başka bir deyişle, Entity.Core'ı System.Data'nın arkasına eklemeniz gerekir. Örnek:
- System.Data.EntityException => System.Data.Entity.Core. Entityexception
- System.Data.Objects.ObjectContext => System.Data.Entity.Core. Objects.ObjectContext
- System.Data.Objects.DataClasses.RelationshipManager => System.Data.Entity.Core. Objects.DataClasses.RelationshipManager
Bu türler , DbContext tabanlı uygulamaların çoğu için doğrudan kullanılmadığından Çekirdek ad alanları içindedir. System.Data.Entity.dll dosyasının parçası olan bazı türler, DbContext tabanlı uygulamalar için yaygın olarak ve doğrudan kullanılmaya devam eder ve bu nedenle Çekirdek ad alanlarına taşınmamıştır. Bu sayfalar şunlardır:
- System.Data.EntityState => System.Data.Varlık. Entitystate
- System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute
Dekont
Bu sınıf yeniden adlandırıldı; eski ada sahip bir sınıf hala var ve çalışıyor, ancak artık eski olarak işaretlendi.
- System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions
Dekont
Bu sınıf yeniden adlandırıldı; eski ada sahip bir sınıf hala var ve çalışıyor, ancak artık eski olarak işaretlendi.)
- Uzamsal sınıflar (örneğin, DbGeography, DbGeometry) System.Data.Spatial => System.Data'dan taşınmıştır.Varlık. Kayma
Dekont
System.Data ad alanı içindeki bazı türler, EF derlemesi olmayan System.Data.dll dosyasındadır. Bu türler taşınmamıştır ve bu nedenle ad alanları değişmeden kalır.