2012-12-04 16 views
5

Ok, więc mam stronę internetową, która używa mvc ASP.net, problem mam z Entity Framework. Dodałem wszystkie odniesienia i dostałem je do uruchomienia na moim lokalnym komputerze, ale kiedy go publikuję, pojawia się następujący błąd.Entity Framework działa na serwerze lokalnym, ale nie zdalnym

System.InvalidOperationException: Typ dostawcy Entity Framework 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version = 6.0.0.0, Culture = neutral, TokenKluczaPublicznego = b77a5c561934e089' do „System.Data.SqlClient "Dostawca ADO.NET nie mógł zostać załadowany. Upewnij się, że zestaw dostawcy jest dostępny dla uruchomionej aplikacji. Aby uzyskać więcej informacji, patrz http://go.microsoft.com/fwlink/?LinkId=260882.

Dwa razy sprawdziłem swoje referencje, a do projektu dodałem zarówno EntityFramework.SqlServer, jak i System.Data. Ciąg połączenia, którego używam do łączenia się z bazą danych i deklarowania usługi, znajduje się poniżej.

<connectionStrings> 
<add name="[dataConnection]" connectionString="Data Source=[ip of host machine];Database=[name];UID=[user];pwd=*******;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Nazwa mamy tylko nazwę bazy danych, jest on również stosowany w moim web.debug.config

<connectionStrings> 
<add name="[dataconnection]" 
    connectionString="Data Source=.;Database=[name];UID=[user];pwd=*******;MultipleActiveResultSets=True;" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    </connectionStrings> 

Jestem całkiem nowy w całej tej sprawy i po prostu podał czyjegoś kod, więc próbuję się nauczyć na temat przepływu. To jest moje pierwsze spotkanie z tym, więc każdy kierunek byłby doceniony.

Odpowiedz

7

Miałem ten sam problem w moim zespole testu integracyjnego (używam do tego celu framework do testowania jednostek wizualnych ms) i rozwiązałem go przez dodanie zespołów EF do elementów wdrażania w pliku .testsettings.

  1. mam zainstalowane EF 6 alfa za pomocą Package Manager za pomocą konsoli: Install-Package EntityFramework -Pre

Tu jest mój app.config

<?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <configSections> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </configSections> 
     <entityFramework> 
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
     </entityFramework> 
    </configuration> 

Moje ciąg połączenia (i "ustawienie w kodzie): server=.\SIN;initial catalog=IntegrationTests;User ID=user;Password=pass;MultipleActiveResultSets=true;

  1. Przyjrzałem się właściwościom referencyjnym zespołu EF, aby sprawdzić, czy są ustawione na "Kopiuj lokalnie" = Prawda. W końcu sprawdziłem folder TestResults /../ Out i okazało się, że nie ma tam zbioru EntityFramework.SqlServer (w nim rezyduje klasa SqlProviderServices).

  2. Więc Właśnie dodałem zarówno EF 6 zestawów do moich elementów wdrażania i teraz wszystko jest ok deployment items

Można spróbować skopiować montaż EntityFramework.SqlServer do katalogu serwera WWW, aby sprawdzić, czy to działa.

Może this link mogą być pomocne

P.S:

Upewnij się, że nie masz odniesienia do System.Data.Entity, ponieważ będziesz używać jednego z GAC. Zespoły EF 6 Alpha nie są instalowane w GAC podczas instalowania ich w Nuget. Ramy docelowe powinny być .NET 4.5.

Przepraszamy za mój zły angielski.

+0

To działało dla mnie, myślę, że EntityFrameworkSqlServer.dll nie było, gdy próbowałem opublikować moją witrynę. – Ken

0

Pytanie: która wersja EF?

Sprawdź IIS w wersji .NET basen ... To powinno być tym, który wskazuje na wersji .NET opublikowanego projektu ... Zespół EF powinny być w folderze .NET Framework w ramach katalogu Windows (AKA GAC)

+0

Wersja, której teraz używam, to 6.0.0.0. Dotyczy to zarówno EntityFramework, jak i EntityFramework.SqlServer – Ken

+0

Nie ma EF 6.0 - o ile mi wiadomo ... Istnieje jednak IIS 6. Spójrz na pulę IIS, która uruchamia twój projekt. Domyślną wersją IIS 6 jest uruchomienie .NET 2.0 i prawdopodobnie dlatego nie jest rozpoznawana wersja montażu EF. – lionheart

+0

Uruchomiona wersja systemu .net Framework to wersja 4.0. Ramy EF to w rzeczywistości 6,0 alfa-1. Wydano go w studiu visual 2012 z tego, co rozumiem. Jeśli się mylę w tej informacji, daj mi znać, to jest to, co udało mi się znaleźć. Nawet jeśli wszystko, co powiedziałem, jest prawdą, czy istnieje jakaś konfuzja między .net 4.0 a IIS7? (IIS7 jest tym, na czym działa serwer). Również sama strona jest w stanie uruchomić, wyświetla tylko ten błąd, gdy próbuję użyć DB. Znaczenie, kiedy próbuję się zalogować i zalogowuję – Ken

Powiązane problemy