Ich verwende die Official Oracle SQL und Entity Framework Treiber, um die Datenbank zu lesen. Aber beim Lesen der Datenbank wird der Tabellenname mit "dbo" vorangestellt:Vermeiden Sie Oracle Schemaname mit Entity Framework
SELECT
*
FROM "dbo"."Woningen"
Ohne "dbo". Präfix der Code funktioniert gut, mit, verursacht es den Fehler "Tabelle oder Ansicht existiert nicht". Dies liegt wahrscheinlich daran, dass der Benutzer nicht 'dbo' ist, also keinen Zugriff auf dieses Schema hat. Dies ist der Entity Framework-Code, ich verwende:
[Table("Woningen")]
public class Woningen
Ich habe versucht, die Oracle nuget Paket aktualisieren, aber dann kommt es mit dem Fehler auf „Connection String ist nicht wohlgeformt“. Es hat wahrscheinlich den gleichen Fehler wie zuvor, es ist nur früher gescheitert. Dies ist das Connectionstring-Format I verwendet:
<add name="DefaultConnection"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="USER ID=testUser;PASSWORD=password;
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=serverUrl)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Database)));"/>
ich drei mögliche Lösungen für dieses Problem sehen, habe aber keine Ahnung, wie sie umgesetzt werden:
- Manipulieren Entity Framework Schemanamen von Abfragen ausschließen
- Gib meinen Benutzerzugriff auf das Schema
- die Treiber-Update und das Connectionstring-Format beheben, wenn jemand weiß, wie das Format geändert ..
Beachten Sie, dass der aktuelle Code bereits in der Produktion funktioniert, so dass die aktuelle Version in Ordnung sein sollte. Die Datenbank und ihr Benutzer sind neu, daher könnte das Problem mit ihrer Erstellung zusammenhängen.
Sie können das entsprechende Schema angeben, um in EF zu verwenden, wenn das hilft? EF6 + 'modelBuilder.HasDefaultSchema (" Ihr Schemaname ");' –
@DanielShillcock Danke, das ist die Lösung, die den Benutzernamen als Schemanamen verwendet. Wenn Sie es zu einer Antwort machen, werde ich es akzeptieren. – MrFox