2012-12-04 19 views
5

Ok, also ich habe eine Website, die ASP.net MVC verwendet, ist das Problem, das ich mit Entity Framework habe. Ich habe alle Referenzen hinzugefügt und es auf meinem lokalen Rechner laufen lassen, aber wenn ich es veröffentliche, erhalte ich den folgenden Fehler.Entity Framework funktioniert auf dem lokalen Server, aber nicht Remote

System.InvalidOperationException: Das Entity Framework Provider-Typ 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' für die ‚System.Data.SqlClient 'ADO.NET-Provider konnte nicht geladen werden. Stellen Sie sicher, dass die Provider-Assembly für die ausgeführte Anwendung verfügbar ist. Weitere Informationen finden Sie unter http://go.microsoft.com/fwlink/?LinkId=260882.

Ich habe meine Referenzen doppelt überprüft und ich habe EntityFramework.SqlServer und System.Data beide in mein Projekt hinzugefügt. Die Verbindungszeichenfolge, mit der ich mich mit der Datenbank verbinde und den Dienst zur Verfügung stelle, ist unten aufgeführt.

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

Namen wir nur den Namen der Datenbank haben, dies auch in meinem web.debug.config verwendet wird

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

Ich bin ziemlich neu in dieser ganzen Sache und wurde nur jemand reichte Elses Code, also versuche ich auf dem Flow zu lernen. Dies ist meine erste Begegnung mit diesem, so dass jede Richtung geschätzt werden würde.

Antwort

7

Ich hatte das gleiche Problem in meiner Integration Test Assembly (ich benutze MS Visual Studio Einheit Test Framework für diese) und ich habe es gelöst, indem EF-Baugruppen zu Bereitstellung Elemente in .testsettings Datei hinzugefügt.

  1. I EF 6 alpha installiert haben mit Package Manager Console: Install-Package EntityFramework -Pre

Hier meine app.config ist

<?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> 

Meine Verbindungszeichenfolge (i binde es in code): server=.\SIN;initial catalog=IntegrationTests;User ID=user;Password=pass;MultipleActiveResultSets=true;

  1. Ich habe die EF-Assembly-Referenzeigenschaften untersucht, um zu sehen, ob sie auf "Copy Local" = True gesetzt sind. Und schließlich habe ich TestResults /../ out Ordner ausgecheckt und festgestellt, dass es keine EntityFramework.SqlServer Assembly gibt (SqlProviderServices-Klasse befindet sich darin).

  2. Also habe ich haben soeben beide EF 6 Baugruppen zu meinen Einsatz Artikel und jetzt ist alles ok deployment items

Sie können versuchen, EntityFramework.SqlServer Montage auf Ihrem Web-Server-Verzeichnis zu kopieren, wenn zu sehen Es klappt.

Vielleicht this link kann hilfreich sein

P.S:

Stellen Sie sicher, dass Sie keine Referenz zu System.Data.Entity haben, da Sie eine von GAC verwenden werden. EF 6-Alpha-Assemblys wird nicht in GAC installiert, wenn Sie sie mit Nuget installieren. Zielframework sollte .NET 4.5 sein.

Sorry für mein schlechtes Englisch.

+0

Dies funktionierte für mich, ich glaube, die EntityFrameworkSqlServer.dll fehlte, als ich versuchte, meine Website zu veröffentlichen. – Ken

0

Eine Frage: Welche EF Version?

Überprüfen Sie Ihre IIS-Pool-.NET-Version ... Es sollte die sein, die auf die .NET-Version Ihres veröffentlichten Projekts verweist ... Die Assembly von EF sollte im .NET Framework-Ordner unter Windows-Verzeichnis (AKA GAC)

+0

Die Version, die ich gerade verwende, ist 6.0.0.0. Dies ist für beide EntityFramework und EntityFramework.SqlServer – Ken

+0

Es gibt keine EF 6.0 - soweit ich weiß ... Es gibt jedoch IIS 6. Sehen Sie sich den IIS-Pool, der Ihr Projekt ausführt. Der Standard von IIS 6 ist das Ausführen von .NET 2.0, und das ist wahrscheinlich der Grund, warum die EF-Assemblyversion nicht erkannt wird. – lionheart

+0

Die .NET Framework-Version wird in Version 4.0 ausgeführt. Das EF-Framework ist tatsächlich 6.0 Alpha-1. Es ist mit Visual Studio 2012 von dem, was ich verstehe, veröffentlicht. Wenn ich mich in dieser Information täusche, lass es mich wissen, es ist genau das, was ich gefunden habe. Selbst wenn all das, was ich gesagt habe, wahr ist, würde es einen Konflikt zwischen .net 4.0 und IIS7 geben? (IIS7 ist, was der Server ausführt). Auch die Seite selbst kann ausgeführt werden, sie zeigt nur diesen Fehler an, wenn ich versuche, die DB zu verwenden. Bedeutung, wenn ich versuche und mich anmelde – Ken

Verwandte Themen