Entity Framework Provider-Typ konnte nicht geladen werden?
Ich versuche zu laufen meine tests auf TeamCity, die derzeit auf meinem Rechner installiert.
System.InvalidOperationException
:Entity Framework provider type
'System.Data.Entity.SqlServer.SqlProviderServices,
,
EntityFramework.SqlServerVersion=6.0.0.0, Culture=neutral,
für die '
PublicKeyToken=b77a5c561934e089'System.Data.SqlClient
'
ADO.NET-provider konnte nicht geladen werden. Stellen Sie sicher, dass der Anbieter die Montage
verfügbar ist, um die laufende Anwendung.Sehen http://go.microsoft.com/fwlink/?LinkId=260882 für mehr
Informationen..
Habe ich keine Referenz zu System.Data.Entity
in jedem meiner Projekte wurde vorgeschlagen, auf codeplex für die Aktualisierung auf EF6.
So, ich bin nicht sicher, warum bekomme ich diese exception.
Ich bekomme keine solche Ausnahme, wenn ich die tests ausführen von VS.
Ich habe versucht mit set CopyLocal auf false dann wieder auf true.. aber das scheint nicht zu funktionieren.
Update
Meine app.config ist die folgende . Hat dies dazu führen, dass einige Verhaltensweisen, die ich nicht verstehe ?
<?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" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
Bekomme ich folgenden stacktrace in teamcity .
[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information..
[03:59:11]
[IntegrationTests.CrudTest+QuestionTest.Create] at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)
at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)
at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)
at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)
at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)
at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)
at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)
at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)
at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)
at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22
at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34
InformationsquelleAutor der Frage ashutosh raina | 2012-12-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gleiche problem, aber ich installierte EF 6 über Nuget. EntityFramework.SqlServer fehlte für eine andere ausführbare Datei. Added mich einfach das nuget-Paket für Ihr Projekt.
InformationsquelleAutor der Antwort Zapacila
Ich hatte das gleiche problem in meiner Test-Projekte - ich installierte die neueste EF6 bits über NuGet und jedes mal flehe ich etwas EF-Verwandte, die ich habe:
Mein workaround: ich setzte diese Methode in meinem test-Projekt:
Diese Methode ist nie genannt worden, aber ich denke, dass der compiler entfernen Sie alle "überflüssigen" - Versammlungen und ohne Verwendung des Entity Framework.SqlServer Zeug schlägt der test fehl.
Sowieso: Funktioniert auf meinem Rechner 😉
Hinweis: Anstatt die Methode zu testen, Projekt, können Sie sicherstellen, dass eine statische Referenz zu SqlProviderServices von Ihrem Model/entity-Projekt.
InformationsquelleAutor der Antwort Robert Muehsig
Nuget konfigurieren Sie die EF6-Projekt zu verweisen EntityFramework.SqlServer.dll. Dies setzt die Ausgabe-Ordner für die EF6-Projekt während zu bauen, aber es wird nicht bereitgestellt, um die Ausgabe-Ordner für Projekte verweisen auf Ihre EF6-Projekt. Ich glaube, dass dies ist, da Visual Studio ist "intelligent" genug, zu erkennen, dass nichts in Ihre Montage ist eigentlich mit der dll direkt und so enthält es nicht. Sie können erzwingen, EntityFramework.SqlServer.dll bereitgestellt werden, um die Ausgabe-Ordner der Projekte verweisen auf Ihre EF6-Projekt (unit-tests, UI ' s usw.) durch hinzufügen von code zu Ihrem EF6-Projekt, verwendet EntityFramework.SqlServer.dll. Seien Sie vorsichtig, nicht, um den code in eine generierte Klasse, wie Sie riskieren, auf den nächsten regen. Ich entschied mich zu fügen Sie die folgende Klasse, um die assembly, die das problem behoben.
InformationsquelleAutor der Antwort Timothy Schoonover
Meine Lösung war das entfernen der entity framework aus dem Projekt über den nuget manager und fügen Sie es wieder ein.
InformationsquelleAutor der Antwort Kevbo
Ich löste dies durch hinzufügen eines mit stament auf meinem DBContext-Klasse, etwa so:
InformationsquelleAutor der Antwort mmttato
Ive verwendet Code-basierte Anmeldung für Anbieter.
link1
link2
Gerade erstellt die configuration-Klasse wie
Entscheidende Punkt ist .SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instanz);
in der so
InformationsquelleAutor der Antwort vkuschenko
Ich es aussortiert mit [DeploymentItem] auf meinem Baugruppe Initialisierung der Klasse
InformationsquelleAutor der Antwort Random
Spät zur party, aber die Spitze gewählt Antworten schien, als hacks zu mir.
Alles, was ich Tat war entfernen Sie die folgenden von meiner app.config in das test-Projekt. Gearbeitet.
InformationsquelleAutor der Antwort jeriley
Problem habe ich, weil ich keinen Bezug zu EntityFramework.sqlServer.dll.
Wenn ich entwickle das Programm, es funktioniert. Aber wenn ich veröffentlichen Sie app und installieren Sie es, es wirft Fehler.
Ich nur Verweis hinzufügen und Erstellen und Veröffentlichen Sie erneut.
InformationsquelleAutor der Antwort Matej
Habe ich endlich dieses Problem gelöst. Stellt sich heraus, ich hatte eine fehlerhafte Implementierung von IDIsposable in meiner repository-Klasse. Ich fest, dass.
Die fehlerhafte Umsetzung verursacht eine stackoverflow-exception, da ich nicht der Entsorgung von Ressourcen, richtig. Dies verursacht VS nicht zum ausführen der tests und der test-execution-engine abgestürzt ist.
Legte ich es bei Microsoft hier ( das war bevor ich die richtige Lösung).
connect.microsoft.com/VisualStudio/feedback/details/775868/vs-test-execution-crashes-in-vs-2012#details
Sowieso, der baut jetzt laufen problemlos auf teamcity. Obwohl, ich bin immer noch neugierig, warum weder VS Test execution engine hatte eine anmutige Art und Weise mir zu sagen, was geschehen war, nicht im Team der Stadt.
Entdeckte ich die Ursache durch manuelles debugging das testen ( was ich nur gemerkt, nach so vielen Tagen , das Update hat mich 5 Sekunden).
Hoffentlich hilft das jemanden, der kommt auf solche Fragen.
InformationsquelleAutor der Antwort ashutosh raina
Sehe ich ähnliches problem, und mit der Methode aus diesem Beitrag: (http://entityframework.codeplex.com/workitem/1590), das löst mein problem.
Um das Problem zu umgehen können Sie Ihre test-Montage direkt auf den Anbieter-Montage durch das hinzufügen von einigen Zeilen, wie es überall in der Testaufbau:
var _ = System.Daten.Entität.SqlServer.SqlProviderServices.Instanz;
InformationsquelleAutor der Antwort Innovation Wang
Habe ich dies Problem gelöst, indem Sie manuell kopieren
EntityFramework.SqlServer.dll
- Datei, um diebin folder
von der Hauptanwendung.InformationsquelleAutor der Antwort Sreeja Sj
Wenn ich inspizierte das problem, ich habe bemerkt, dass die folgende dll fehlen in der Ausgabe-Ordner. Die einfache Lösung ist Kopie Entityframework.dll und Entityframework.sqlserver.dll mit der app.config, um die Ausgabe-Ordner, wenn die Anwendung auf debug-Modus. Zur gleichen Zeit, ändern Sie die build-option parameter "Copy to output folder" - app.config kopieren. Dies wird Ihr problem lösen.
InformationsquelleAutor der Antwort Thusitha Jayawickrama
Einfach Referenz oder browser-EF-dll - EntityFramework.SqlServer.dll
InformationsquelleAutor der Antwort yogihosting
Ich wollte nicht, dass ein Verweis auf EF in meine Anwendung ein Projekt (oder manuell alles kopieren) also fügte ich diese zu meinem EF-Projekt Post-build-Ereignisse:
InformationsquelleAutor der Antwort patrickbadley
Passiert das nur in meinem laden - /unit-Test-Projekte. Frustrierend, ich jyst hatte, Sie crop-up in ein Projekt, das ich seit 2 Jahren. Müssen einige der Reihenfolge der test läuft, der Dinge zerbricht. Ich denke mal, der fi bekommt entfernt Sie Weg.
Ich fand, dass einfach eine variable deklarieren, verwendet der richtige Wert behebt das Problem... ich habe nicht einmal die Methode aufrufen. Nur definieren. Seltsam, aber es funktioniert.
InformationsquelleAutor der Antwort hal9000
Überprüfte ich die Debug-Ausgabe-Fenster in Unit-Test-Projekt. EntityFramework.SqlServer.dll wurde nicht geladen. Nach dem hinzufügen in den Ordner " bin " - tests wurden erfolgreich ausgeführt.
InformationsquelleAutor der Antwort yW0K5o
Hatte ich dieselben isssue ich habe versucht, viele Male, aber es nicht beheben aber wenn ich installieren Sie das Paket EntityFramework.SqlServerCompact es gelöst installieren Sie dieses Paket, aus dem Nuget-Paket-Manager.
InformationsquelleAutor der Antwort Alishan
Ich hatte genau die gleiche Fehlermeldung.
Habe ich ein separates Projekt für meine Daten zugreifen. Läuft der Web-Projekt (welches verwiesen wird, die Daten-Projekt) vor Ort hat Prima funktioniert. Aber wenn ich bei der Bereitstellung des web-Projekt azure die Montage: EntityFramework.SQL Server wurde nicht kopiert. Ich habe gerade den Verweis auf das web-Projekt und umgeschichtet, jetzt funktioniert es.
hoffe, dies hilft anderen
InformationsquelleAutor der Antwort pastrami01
Arbeitete ich auf der Contoso-Universität-tutorial offline und hatte das gleiche Problem beim erstellen meiner ersten controller mit EF.
Ich habe das Paket-Manager-Konsole zu laden EF aus dem nuget-cache und erstellt einen connection string auf meinem lokalen Instanz von SQL Server, mein Punkt hier ist mein webConfig-Einstellung für die EF kann nicht festgelegt werden, da Sie alle draußen, aber ich war in der Lage zu beheben, mein Problem vollständig zu löschen die "Anbieter" - Abschnitt in "entityFramework"
Robert
InformationsquelleAutor der Antwort Robert K
Gibt es eine einfache Lösung. öffnen Sie die Verweise in Ihrem Projekt mit der rechten klicken Sie auf "System.Daten" - > "Eigenschaften". Ändern Sie die "Lokale Kopie" auf "True".
Problem sollte behoben sein.
InformationsquelleAutor der Antwort ChinaHelloWorld
In meinem Fall habe ich das problem gelöst durch Installation von SQL Server 2012 Developer Edition, wenn ich vorher installierten SQL Server Express 2012 (x64). Es scheint, dass mir die fehlende Abhängigkeit.
InformationsquelleAutor der Antwort Farrukh Najmi
Hinzufügen Entityframework.dll und Entityframework.sqlserver.dll zum Referenz-Projekt das Problem gelöst.
InformationsquelleAutor der Antwort Nish
entfernen Sie das entity framework aus dem Projekt über nuget und fügen Sie es wieder in.
InformationsquelleAutor der Antwort Griffo
In meinem Fall
dll
wurde nicht kopiert, obwohl ich fügte einen Hinweis darauf. Dies ist, weilEntityFramework.SqlServer.dll
wird nicht kopiert, in Ihr Projekt. Fügen Sie die dll, und es wird hoffentlich funktionieren.Sie können feststellen, dass aus dem Projekt, in dem Sie Hinzugefügt datamodel.InformationsquelleAutor der Antwort Baqer Naqvi
Zusätzlichen nützliche Ratschläge hier, wenn Sie mit EF 6.1.3, bekommen Sie sicher, dass Ihr Projekt ist .net-version 4.5 oder mehr.
InformationsquelleAutor der Antwort Mauricio Atanache
Das problem in meinem Fall war, dass, um zu fangen eine weitere Ausnahme hatte ich aktiviert common language runtime (CLR) Ausnahmen. Und ich habe vergessen, es zu deaktivieren.
Deaktiviert habe, es in meine Ausnahme festlegen. und Sie übersehen diese Ausnahme und ging auf ausführen, und erstellen Sie eine db für mich (in meinem Fall) automatisch.
InformationsquelleAutor der Antwort Blue Clouds
Stellen Sie sicher, EntityFramework.dll, EntityFramework.SqlServer.dll und Ihren provider-dll (für SQL Server Compact, das wird EntityFramework.SqlServerCompact.dll) sind in die bereitgestellte Anwendung Ordner. Dies ist besonders wichtig für die Anwendung bereitgestellt.
InformationsquelleAutor der Antwort falopsy
Ich hatte auch ein ähnliches problem
Mein problem wurde gelöst, indem Sie Folgendes tun:
InformationsquelleAutor der Antwort BehrouzMoslem
Den ich jemals getroffen habe genau das gleiche problem auf meinem CI-build-server (mit Bambus), welche sich aber nicht installieren, die Visual Studio-IDE.
Ohne ändernden code für die build - /test-Prozess (was ich nicht glaube, ist es eine gute Lösung), ist die beste Möglichkeit, kopieren Sie den
EntityFramework.SqlServer.dll
und fügen Sie es zuC:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
. (wo Ihr mstest läuft)Problem gelöst!
InformationsquelleAutor der Antwort Kelvin