Udostępnij za pośrednictwem


Dostawcy dla rozwiązania Entity Framework 6

Uwaga

Tylko rozwiązanie EF6 i nowsze wersje — Funkcje, interfejsy API itp. omówione na tej stronie zostały wprowadzone w rozwiązaniu Entity Framework 6. Jeśli korzystasz ze starszej wersji, niektóre lub wszystkie podane informacje nie mają zastosowania.

Rozwiązanie Entity Framework jest teraz opracowywane w ramach licencji open source, a rozwiązanie EF6 i nowsze wersje nie będą dostarczane jako część platformy .NET Framework. Ma to wiele zalet, ale wymaga też ponownej kompilacji dostawców EF przy użyciu zestawów rozwiązania EF6. Oznacza to, że dostawcy EF przeznaczeni dla rozwiązania EF5 i starszych wersji nie będą działać z rozwiązaniem EF6, dopóki nie zostaną ponownie skompilowani.

Którzy dostawcy są dostępni dla rozwiązania EF6?

Dostawcy, o których wiemy, że zostali ponownie skompilowani dla rozwiązania EF6:

Należy pamiętać, że obecność na tej liście nie wskazuje poziomu funkcjonalności ani obsługi danego dostawcy, lecz jedynie dostępność kompilacji dla rozwiązania EF6.

Rejestrowanie dostawców EF

Począwszy od wersji Entity Framework 6, można rejestrować dostawców EF przy użyciu konfiguracji opartej na kodzie lub w pliku konfiguracji aplikacji.

Rejestracja w pliku konfiguracji

Rejestracja dostawcy EF w pliku app.config lub web.config ma następujący format:

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

Należy pamiętać, że jeśli dostawca EF jest instalowany z pakietu NuGet, pakiet ten automatycznie doda tę rejestrację do pliku konfiguracji. Jeśli zainstalujesz pakiet NuGet w projekcie, który nie jest projektem startowym aplikacji, może być konieczne skopiowanie rejestracji do pliku konfiguracji projektu startowego.

Wartość „invariantName” w tej rejestracji jest taka sama jak niezmienna nazwa używana do identyfikowania dostawcy ADO.NET. Ten atrybut występuje jako atrybut „invariant” w rejestracji klasy DbProviderFactories i jako atrybut „providerName” w rejestracji parametrów połączenia. Niezmienna nazwa, której należy użyć, powinna być również podana w dokumentacji dostawcy. Przykłady niezmiennych nazw to „System.Data.SqlClient” dla programu SQL Server i „System.Data.SqlServerCe.4.0” dla programu SQL Server Compact.

Wartość „type” w tej rejestracji jest kwalifikowaną przy użyciu zestawu nazwą typu dostawcy, który pochodzi od typu „System.Data.Entity.Core.Common.DbProviderServices”. Na przykład ciąg używany dla programu SQL Compact to „System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact”. Typ, którego należy tutaj użyć, powinien być podany w dokumentacji dostawcy.

Rejestracja oparta na kodzie

Począwszy od wersji Entity Framework 6, konfigurację dla rozwiązania EF dotyczącą całej aplikacji można określać w kodzie. Aby uzyskać szczegółowe informacje, zobacz Konfiguracja oparta na kodzie w rozwiązaniu Entity Framework. Normalnym sposobem rejestrowania dostawcy EF przy użyciu konfiguracji opartej na kodzie jest utworzenie nowej klasy pochodzącej od klasy System.Data.Entity.DbConfiguration i umieszczenie jej w tym samym zestawie co klasa DbContext. Następnie klasa DbConfiguration powinna zarejestrować dostawcę w swoim konstruktorze. Na przykład w przypadku rejestrowania dostawcy programu SQL Compact klasa DbConfiguration wygląda następująco:

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

W tym kodzie właściwość „SqlCeProviderServices.ProviderInvariantName” umożliwia wygodne uzyskanie niezmiennego ciągu nazwy dostawcy programu SQL Server Compact („System.Data.SqlServerCe.4.0”), a właściwość SqlCeProviderServices.Instance zwraca pojedyncze wystąpienie dostawcy EF dla programu SQL Server Compact.

Co zrobić, jeśli potrzebny dostawca nie jest dostępny?

Jeśli dostawca jest dostępny dla poprzednich wersji rozwiązania EF, zachęcamy, aby skontaktować się z właścicielem dostawcy i poprosić o utworzenie wersji dla rozwiązania EF6. Należy dołączyć odwołanie do dokumentacji modelu dostawców EF6.

Czy mogę samodzielnie opracować dostawcę?

Z pewnością można samodzielnie utworzyć dostawcę EF, ale nie będzie to proste zadanie. Powyższy link dotyczący modelu dostawców EF6 jest dobrym punktem wyjścia. Przydatne może być też użycie kodu dla dostawcy programów SQL Server i SQL CE zawartego w bazie kodu open source rozwiązania EF jako punktu wyjścia lub do celów referencyjnych.

Należy pamiętać, że począwszy od wersji EF6 dostawca EF jest mniej powiązany z bazowym dostawcą ADO.NET. Ułatwia to opracowywanie dostawców EF bez konieczności pisania lub opakowywania klas platformy ADO.NET.