2016-04-26 3 views
0

Wir verwenden DevArt dotConnect, um eine Verbindung zu einem Oracle-Backend herzustellen. Unsere vorherigen Dev-Maschinen haben alle dotConnect 8.4.254.4 benutzt, was in Subversion eingecheckt ist. Ich habe einen neuen Dev-Rechner eingerichtet und die neueste Version installiert, nämlich 8.5.616.0. Ich habe jede 8.4-Referenz aktualisiert, die ich finden konnte, sogar ein "Find in Files" über alles, was eingecheckt wurde. Allerdings macht etwas an dieser Version unseren Code kaputt. Im Grunde genommen recht, wenn ich versuche, einen Datenbank-Kontext zu erstellen:Laufzeitfehler beim Erstellen des Datenbankkontexts mit dotConnect und Entity Framework 6

using (var _context = new DbContext())

Ich erhalte diese Ausnahme:

Das 'Instanz' Mitglied des Entity Framework Anbietertypen ‚Devart.Data.Oracle .Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity, Version = 8.5.616.0, Culture = neutral, PublicKeyToken = 09af7300eec23701' kam nicht ein Objekt, das erbt von ‚System.Data.Entity.Core.Common.DbProviderServices ". Entity Framework-Anbieter müssen von dieser Klasse erben, und das Element 'Instanz' muss die Singleton-Instanz des Providers zurückgeben. Dies kann daran liegen, dass der Provider Entity Framework 6 oder höher nicht unterstützt; siehe http://go.microsoft.com/fwlink/?LinkId=260882 für weitere Informationen Informationen.

Ich habe eine ganze Weile damit verbracht, Stack Overflow nach ähnlichen Fehlern zu durchsuchen, und es gibt viele (in vielen Datenbanksystemen). Es gibt verschiedene Lösungen, z. B. das Aktualisieren verschiedener .config-Dateien und Assemblyverweise, aber ich habe das alles schon probiert. Es gab auch einige Vorschläge zum Verschieben der DLL aus dem GAC und zum direkten Bezug auf Programme, die ich ebenfalls ausprobiert habe. Ich bin jetzt ratlos. Wie kann ich die Ursache dieses Problems aufspüren? Ich bin glücklich, mehr Code oder Informationen hinzufügen, die hilfreich wären, einfach fragen.

Update:

Ich habe im Objektbrowser bemerkt, wenn ich auf die tatsächliche Devart.Data.Oracle.Entity.OracleEntityProviderServices Klasse gehen, der Basistyp ist fehlt:

enter image description here

Ich frage mich, wenn dies mit dem Problem zusammenhängt.

Antwort

1

Bitte überprüfen Sie Ihre * .config. Die Revisionsnummer des Anbieters im EntityFramework Abschnitt sollte 6 (8.5.616.6) sein, aber es hat 0 (8.5.616.0) in DbProviderFactories sein (http://blog.devart.com/entity-framework-6-support-for-oracle-mysql-postgresql-sqlite-and-salesforce.html#ProviderRegistration):

<?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> 
    <providers> 
     <provider invariantName="Devart.Data.Oracle" type="Devart.Data.Oracle.Entity.OracleEntityProviderServices, Devart.Data.Oracle.Entity, Version=8.5.616.6, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="Devart.Data.Oracle" /> 
     <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=8.5.616.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </DbProviderFactories> 
    </system.data> 
</configuration> 

auch Verweise entfernen, um die Devart * Baugruppen. und readd sie:

C: \ Program Files (x86) \ Devart \ dotConnect \ Oracle \ Devart.Data.dll

C: \ Program Files (x86) \ Devart \ dotConnect \ Oracle \ Devart.Data .Oracle.dll

C: \ Programme (x86) \ Devart \ dotConnect \ O racle \ Entity \ EF6 \ Devart.Data.Oracle.Entity.dll (die Revisionsnummer ist 6)

Funktioniert das?

Wenn Sie auf Version 9.0 aktualisieren, beachten Sie die Namensänderungen: http://forums.devart.com/viewtopic.php?f=1&t=33571> Entity Framework Assembly Name Change.

+0

Das reparierte es, danke! .NET Versioning ist immer ein Problem. –

Verwandte Themen