myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » Wie kann ich aus VS 2019 auf eine Oracle Datenbank mit Entity Framework zugreifen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich aus VS 2019 auf eine Oracle Datenbank mit Entity Framework zugreifen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
sindibad sindibad ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.01.2012
Beiträge: 102
Entwicklungsumgebung: visual studio


sindibad ist offline

Wie kann ich aus VS 2019 auf eine Oracle Datenbank mit Entity Framework zugreifen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

verwendetes Datenbanksystem: <Oracle client 11.2>
Ich möchte in visual studio 2019 auf eine Oracle Datenbank mit Entity framework zugreifen.
Ich habe oracle developer tools für vs2019, Oracle.ManagedDataAccess und Oracle.ManagedDataAccess.EntityFramework installiert.
wenn ich eine Connection hinzufügen möchte mit dem managed odp driver, bekomme ich eine Fehlermeldung bei kerberos Authentification:

Fehlermeldung:
The error message reads "NA Kerberos5: Authentication handshake failure at stage: Could not load file or assembly 'Oracle.ManagedDataAccessIOP.dll' or one of its dependencies. The specified module could not be found."

der Oracle Client/Server benutzt Kerberos.

Ich habe diesen Link gefunden  https://community.oracle.com/thread/3731184
aber Ich komme nicht weiter.

hat jemand schon hier Erfahrung mit vs2019, oracle und EF gemacht?
Neuer Beitrag 26.06.2020 23:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.636
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und? Hast du entsprechend der Links  MIT Kerberos ("for Windows 4.1") bei dir installiert?
Oder eben den Oracle Client 12c installieren.
Neuer Beitrag 27.06.2020 08:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
sindibad sindibad ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.01.2012
Beiträge: 102
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von sindibad

sindibad ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe jetzt MIT kerberos installiert. Ich bekomme immer noch die selbe Fehlermeldung.
gesucht wird die Version 4.122.19.1 von der assembly 'Oracle.ManagedDataAccessIOP.dll'.
die dll existiert ist unter nuget package. wo sucht vs diese dll?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von sindibad am 28.06.2020 18:13.

Neuer Beitrag 28.06.2020 17:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von sindibad:
Ich möchte in visual studio 2019 auf eine Oracle Datenbank mit Entity framework zugreifen.

Was genau willst Du machen? Die Beschreibung hier kann nicht sein.

Entweder willst Du programmatisch mit .NET und EF auf eine Oracle Datenbank zugreifen (wobei hier eben Visual Studio keinerlei Rolle spiel, weil es nur ein Editor ist) oder mit Visual Studio (und dessen Datenbank-Explorer) und der Oracle Developer Tool Extension den auf eine Oracle Datenbank zugreifen (was aber im Hintergrund kein EF verwendet).

Wenn Du ersten Punkt meinst, Du also mit selbst geschriebenem Code auf eine Oracle Datenbank zugreifen willst (aber auch hier muss ich leider raten):
Die Oracle ODP Pakete unterstützen kein Kerberos bei .NET Core, weil .NET Core keine Kerberos APIs hat.

Aber da keiner hier wirklich lust hat zu raten:
Erklär bitte, was Du wirklich machen willst.
Neuer Beitrag 28.06.2020 17:53 Beiträge des Benutzers | zu Buddylist hinzufügen
sindibad sindibad ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.01.2012
Beiträge: 102
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von sindibad

sindibad ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok. ich versuche es nochmal zu beschreiben:

als Tool benutze ich vs 2019 und vs 2010.

Ich möchte eine .net library erstellen mit c#, die auf der Oracle Db zugreift und die Daten ausliest.
diese Library wird dann von anderen clients verwendet.

für den DB Zugriff,möchte ich entity framework benutzen (database first).

Oracle Client/server benutzt kerberos

um entity framework zu benutzen mit vs 2019, habe ich ODT und die oracle packages installiert.
Ich möchte ein ado.net entity data model erstellen und die Klassen generieren lassen. bei der DB-Verbindung bekomme ich die kerberos Fehlermeldung ach nach Installation von MIT kerberos

ich habe schon den Zugriff auf einer oracle db in einem anderen Projekt mit vs 2010 und entity framework mit dem alten odp.net (ODAC) realisiert.

Ich hoffe, es ist klar jetzt was ich vorhabe. wenn es mit EF nicht geht, finde ich schade und muss auf den klassischen Weg mit commands und querys arbeiten.

mit sql server von microsoft funktioniert alles einwandfrei mit vs und ef. aber hier muss mich mit oracle ärgern.
Neuer Beitrag 28.06.2020 18:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Gut, also raten wir einfach mal weiter:

Da Du VS2019 UND VS2010(?) verwendest, reden wir also von .NET Framework und nicht von .NET Core: denn VS2010 kann keine .NET Core Projekte öffnen.

Prinzipiell geht es Dir aber anders als beschrieben gar nicht um Visual Studio, sondern um den Code.
Da wir nun durch Ausschlussverfahren von Informationen vom .NET Framework reden, sprechen wir also auch von EF6 und nicht von EFCore.

Jetzt ist die Krux an der Sache: Oracle hat es all die Jahre nie geschafft für EF einen wirklich stabiles ODP Paket umzusetzen.
Ob Dein Paket mit der Oracle Client Version kompatibel ist; das musst Du immer von Hand prüfen. Das könnte durchaus den Fehler auslösen. Kompatibilitäten und Oracle halt... nichts neues.
Was Dein genanntes "ODT" ist, das weiß ich nicht. Kenne nur ODP im Zusammenhang von Oracle.

Zitat:
Ich möchte ein ado.net entity data model erstellen und die Klassen generieren lassen.

Wenn Du damit EDMX meinst: das ist seit Jahren, wirklich Jahren - bestimmt EF 4 Zeiten - schon nicht mehr der empfohlene Weg.
EDMX ist nicht Code First.

Hinweis: soweit ich weiß gibt es kein einziges Oracle ODP Paket, das über NuGet von VS2010 konsumiert werden kann.
Du wirst immer mindestens VS2012 oder gar VS2015 brauchen - oder eben Dein VS2019.
Neuer Beitrag 28.06.2020 22:06 Beiträge des Benutzers | zu Buddylist hinzufügen
sindibad sindibad ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.01.2012
Beiträge: 102
Entwicklungsumgebung: visual studio

Themenstarter Thema begonnen von sindibad

sindibad ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo und Danke für die Antworten,

damit du weniger raten musst): , noch ein paar Hinweise
- Ich habe vs 2010 und 2019 zur Verfügung aber natürlich möchte ich vs 2019 benutzen, soweit es geht um seine Vorteile zu nutzen.
- Ich musste meine Library mit .net/EF6 und nicht mit .net core erstellen weil wie du geschrieben hast: Die Oracle ODP Pakete unterstützen kein Kerberos bei .NET Core
- mit ODT meine ich Oracle Developer Tools for Visual Studio 2019  Link

- Ich weiss, dass Code first die bessere Variante ist gegenüber database first, aber in mein Fall, existiert die Datenbank schon. d.H. ich kann nur database first benutzen um die entitys und dbcontext aus der Datenbank zu generieren oder?
Neuer Beitrag 29.06.2020 09:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.938
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von sindibad:
- mit ODT meine ich Oracle Developer Tools for Visual Studio 2019  Link

Das spielt keine Rolle, weil Visual Studio ein Entwicklertool ist. Die Extension spielen für Deine Entwicklerzeit eine Rolle, aber nicht für die Ausführung der Anwendung.
Deine Fehlermeldung wird auch von der Laufzeit geworfen, und nicht von Visual Studio.
Visual Studio "sucht" auch nicht nach irgendwelchen DLLs während der Laufzeit, sondern das macht ebenfalls die Runtime - und zur Build-Zeit der Compiler; aber nicht Visual Studio.
Du kannst C# auch problemlos mit einem Notepad programmieren und alles, was Visual Studio ausführt, von Hand ausführen.

Schau Dir nochmal an, was .NET ist - und was nicht. Was die Aufgabe von Visual Studio ist und Co.
Das sind Deine Werkzeuge, mit der Du entwickelst; Du musst die Funktionsweisen im Griff haben.

Zitat von sindibad:
Ich weiss, dass Code first die bessere Variante ist gegenüber database first, aber in mein Fall, existiert die Datenbank schon. d.H. ich kann nur database first benutzen um die entitys und dbcontext aus der Datenbank zu generieren oder?

Code First = Du erstellst die POCOs
Database First = ein Generator erstellt die POCOs anhand eines fertigen Modells (+ noch Overhead)

Es gibt absolut kein Problem eine vorhandene Datenbank mit selbst geschriebenen POCOs zu verwenden. Siehe auch ein 10 Sekunden-Blick in die Doku:  Code First to an Existing Database - und ja, das geht auch ohne Visual Studio Code Generator.
Problem: es gibt kein Invest mehr in den Generator; man hat eigentlich schon gedacht, dass der Generator nicht mal mehr in VS2019 enthalten ist.
Nun wirds also evtl. erst VS2021 sein, oder wie auch immer die nächsten Version heissen wird.

Du baust Dir damit also eine Basis, die Du nicht langfristig, sondern kurzfristig ersetzen musst.

Ich tippe aber zum Problem, dass Du entweder noch was bei den Kerberos Dependencies was vergessen hast, oder es ein Version Issue gibt.
Neuer Beitrag 29.06.2020 10:15 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 02.07.2020 20:34