Entity Framework - Geçiş

Entity Framework 5 ve Entity Framework'ün önceki sürümlerinde kod, .NET Framework'ün bir parçası olarak gönderilen çekirdek kitaplıklar (özellikle System.Data.Entity.dll) arasında bölündü ve ek kitaplıklar (öncelikle EntityFramework.dll) dağıtıldı ve Aşağıdaki diyagramda gösterildiği gibi NuGet kullanılarak gönderilir.

Entity Framework 6'da, daha önce .NET çerçevesinin parçası olan temel API'ler de NuGet paketinin bir parçası olarak gönderilir ve dağıtılır.

Bu, Entity Framework'ün açık kaynak yapılmasına izin vermek için gerekliydi. Bununla birlikte, sonuç olarak, uygulamanızı Entity Framework'ün eski sürümlerinden EF 6'ya geçirmeniz veya yükseltmeniz gerektiğinde uygulamaların yeniden oluşturulması gerekecektir.

Uygulamanız EF 4.1 ve sonraki sürümlerde gönderilen DbContext kullanıyorsa geçiş işlemi basittir. Ancak uygulamanız ObjectContext ise, biraz daha fazla çalışma yapmanız gerekir.

Mevcut bir uygulamayı EF6'ya yükseltmek için yapmanız gereken aşağıdaki adımlara bir göz atalım.

Step 1 - İlk adım, .NET Framework 4.5.2'yi hedeflemektir ve daha sonra projenize sağ tıklayın ve özellikleri seçin.

Step 2 - Projenize tekrar sağ tıklayın ve NuGet Paketlerini Yönet'i seçin ...

Step 3- Çevrimiçi sekmesinin altında EntityFramework'ı seçin ve Yükle'yi tıklayın. System.Data.Entity.dll'ye yönelik derleme başvurularının kaldırıldığından emin olun.

EF6 NuGet paketini yüklediğinizde, sizin için projenizden System.Data.Entity'ye yapılan tüm başvuruları otomatik olarak kaldırmalıdır.

Step 4 - EF Designer ile oluşturulmuş herhangi bir modeliniz varsa, EF6 uyumlu kod oluşturmak için kod oluşturma şablonlarını da güncellemeniz gerekir.

Step 5 - edmx dosyanızın altındaki Çözüm Gezgini'nde, genellikle <edmx_file_name> .tt ve <edmx_file_name> .Context.tt olarak adlandırılacak mevcut kod oluşturma şablonlarını silin.

Step 6 - Modelinizi EF Designer'da açın, tasarım yüzeyine sağ tıklayın ve Add Code Generation Item ... öğesini seçin.

Step 7 - Uygun EF 6.x kod oluşturma şablonunu ekleyin.

Ayrıca otomatik olarak EF6 uyumlu kod üretecektir.

Uygulamalarınız EF 4.1 veya sonraki bir sürümünü kullanıyorsa, DbContext ve Code First türlerinin ad alanları değişmediğinden, kodda hiçbir şeyi değiştirmeniz gerekmez.

Ancak uygulamanız Entity Framework'ün eski sürümünü kullanıyorsa, daha önce System.Data.Entity.dll'de bulunan ObjectContext gibi türler yeni ad alanlarına taşınmıştır.

Step 8 - EF6'ya göre derlemek için kullanma veya Alma yönergelerinizi güncellemeniz gerekir.

Ad alanı değişiklikleri için genel kural, System.Data. * İçindeki herhangi bir türün System.Data.Entity.Core. * 'Ye taşınmasıdır. Bunlardan bazıları aşağıdadır -

  • 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;

Çoğu DbContext tabanlı uygulama için doğrudan kullanılmadıkları için bazı türler Core ad alanlarında bulunur.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Mevcut Entity Framework projeniz, herhangi bir büyük değişiklik olmadan Entity Framework 6.0'da çalışacaktır.