Aracılığıyla paylaş


Entity Framework 6 Sağlayıcısı

Dekont

Yalnızca EF6'ya Doğru - Bu sayfada ele alınan özellikler, API'ler vb. Entity Framework 6'da sunulmuştur. Önceki bir sürümü kullanıyorsanız, bilgilerin bir kısmı veya tümü geçerli değildir.

Entity Framework artık bir açık kaynak lisansı altında geliştirilmektedir ve EF6 ve üzeri .NET Framework'ün bir parçası olarak gönderilmeyecektir. Bunun birçok avantajı vardır, ancak EF sağlayıcılarının EF6 derlemelerine karşı yeniden oluşturulmasını da gerektirir. Bu, EF5 ve altındaki EF sağlayıcılarının yeniden oluşturulmadan EF6 ile çalışmayacağı anlamına gelir.

EF6 için hangi sağlayıcılar kullanılabilir?

EF6 için yeniden oluşturulan sağlayıcılar şunlardır:

Bu listede olmanın belirli bir sağlayıcının işlevsellik veya destek düzeyini belirtmediğini, yalnızca EF6 için bir derlemenin kullanıma sunulduğuna dikkat edin.

EF sağlayıcılarını kaydetme

Entity Framework 6 EF'den başlayarak sağlayıcılar kod tabanlı yapılandırma kullanılarak veya uygulamanın yapılandırma dosyasına kaydedilebilir.

Yapılandırma dosyası kaydı

EF sağlayıcısının app.config veya web.config kaydı aşağıdaki biçimdedir:

    <entityFramework>
       <providers>
         <provider invariantName="My.Invariant.Name" type="MyProvider.MyProviderServices, MyAssembly" />
       </providers>
    </entityFramework>

EF sağlayıcısı NuGet'ten yüklenirse, NuGet paketinin bu kaydı otomatik olarak yapılandırma dosyasına ekleyeceğini unutmayın. NuGet paketini uygulamanızın başlangıç projesi olmayan bir projeye yüklerseniz, kaydı başlangıç projenizin yapılandırma dosyasına kopyalamanız gerekebilir.

Bu kayıttaki "invariantName", ADO.NET sağlayıcısını tanımlamak için kullanılan sabit adla aynıdır. Bu, bir DbProviderFactories kaydında "invariant" özniteliği ve bağlantı dizesi kaydında "providerName" özniteliği olarak bulunabilir. Kullanılacak sabit ad, sağlayıcının belgelerine de eklenmelidir. Sabit adlara örnek olarak SQL Server için "System.Data.SqlClient" ve SQL Server Compact için "System.Data.SqlServerCe.4.0" verilebilir.

Bu kayıttaki "type", "System.Data.Entity.Core.Common.DbProviderServices" kaynağından türetilen sağlayıcı türünün derleme nitelikli adıdır. Örneğin, SQL Compact için kullanılacak dize "System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" dizesidir. Burada kullanılacak tür, sağlayıcının belgelerine eklenmiş olmalıdır.

Kod tabanlı kayıt

Entity Framework 6'dan başlayarak, EF için uygulama genelinde yapılandırma kodda belirtilebilir. Eksiksiz ayrıntılar için bkz. Entity Framework Kod Tabanlı Yapılandırması. Kod tabanlı yapılandırma kullanarak bir EF sağlayıcısı kaydetmenin normal yolu, System.Data.Entity.DbConfiguration'dan türetilen yeni bir sınıf oluşturmak ve bunu DbContext sınıfınızla aynı derlemeye yerleştirmektir. DbConfiguration sınıfınızın daha sonra sağlayıcıyı oluşturucusunda kaydetmesi gerekir. Örneğin, SQL Compact sağlayıcısını kaydetmek için DbConfiguration sınıfı şöyle görünür:

    public class MyConfiguration : DbConfiguration
    {
        public MyConfiguration()
        {
            SetProviderServices(
                SqlCeProviderServices.ProviderInvariantName,
                SqlCeProviderServices.Instance);
        }
    }

Bu kodda "SqlCeProviderServices.ProviderInvariantName", SQL Server Compact sağlayıcı sabit ad dizesi ("System.Data.SqlServerCe.4.0") için bir kolaylıktır ve SqlCeProviderServices.Instance, SQL Compact EF sağlayıcısının tekil örneğini döndürür.

İhtiyacım olan sağlayıcı kullanılamıyorsa ne olur?

Sağlayıcı EF'nin önceki sürümlerinde kullanılabiliyorsa, sağlayıcının sahibine başvurmanızı ve bir EF6 sürümü oluşturmasını istemenizi öneririz. EF6 sağlayıcı modelinin belgelerine bir başvuru eklemelisiniz.

Sağlayıcıyı kendim yazabilir miyim?

Önemsiz bir işlem olarak kabul edilmemesi gerekirse de bir EF sağlayıcısını kendiniz oluşturmak kesinlikle mümkündür. EF6 sağlayıcı modeliyle ilgili yukarıdaki bağlantı, başlamak için iyi bir yerdir. Ayrıca EF açık kaynak kod tabanında yer alan SQL Server ve SQL CE sağlayıcısı kodunu başlangıç noktası olarak veya başvuru amacıyla kullanmayı da yararlı bulabilirsiniz.

EF6'dan başlayarak EF sağlayıcısının temel alınan ADO.NET sağlayıcısıyla daha gevşek bir şekilde ilişkilendirildiğini unutmayın. Bu, ADO.NET sınıflarını yazmaya veya sarmalamaya gerek kalmadan EF sağlayıcısı yazmayı kolaylaştırır.