Łączenie z serwerem SQL za pomocą EF6
Do EF5, aby połączyć się z SQL Server 2012, wszystko, czego potrzebowałem, to określić ciąg połączenia, który wygląda mniej więcej tak:
Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True
Ta metoda nie działa z EF6, dając wyjątek
Nie znaleziono dostawcy Entity Framework dla dostawcy „System.Data.Odbc” ADO.NET. Upewnij się, że dostawca jest zarejestrowany w sekcji „entityFramework” pliku konfiguracyjnego aplikacji
Nie używamapp.config
plik w ogóle, przekazuję powyżej ciąg połączenia do konstruktora MyContext. DLACZEGO próbuje w ogóle używać dostawcy Odbc, a nie używać System.Data.SqlClient?
Co należy zrobić, aby połączyć się z SQL Server za pomocą kodu EF6? Upewniłem się, że EntityFramework.dll i EntityFramework.SqlServer.dll są dostępne w folderze Application. Dodałem nawet pakiet EF6 nuget v6.0.0.1 w projekcie WPF, chociaż nie używa on bezpośrednio biblioteki EF i upewniając się, że automatycznie utworzony plik App.Config (przez nuget) jest kopiowany do folderu Application (Debug) - nadal nie powodzenie.
Próbowałem także ręcznie ustawić kod źródłowy:
public class OeeCoachConfiguration : DbConfiguration
{
public OeeCoachConfiguration()
{
SetProviderServices("System.Data.SqlClient",
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
Wciąż nie ma sukcesu. Moja struktura projektu jest następująca (uproszczona):
Projekt WPF - nie ma odniesienia do EF (próbowano również dodać odniesienie EF)
Biblioteka klasy ViewModel - nie ma odniesienia do EF
Biblioteka klas modeli - ma odniesienie do biblioteki EF (obie biblioteki DLL)
Biblioteka klasy danych - ma odniesienie do biblioteki UI (obie biblioteki DLL).
Korzystam z podejścia CodeFirst i ta konfiguracja działa bez problemu z EF5. Każda pomoc jest bardzo mile widziana.