Ошибка ORA-00303 при запуске в отладке из Visual Studio, но код отлично работает вне VS - PullRequest
0 голосов
/ 09 января 2020

Наличие консольного приложения. NET 4.0 (C#) с использованием Entity Framework 5.0. Запуск кода в консоли работает просто отлично - код подключается к БД и получает данные ОК. Запуск в режиме отладки в VS 2017 поставляется с:

ORA-00303: Network Library: Name-Value syntax error

Это немного странно, потому что строка подключения должна быть в порядке, иначе она не будет работать в консоли. Отладка немного глубже, я вижу, что строка подключения передается управляемому драйверу Oracle, как это показано в файле App.config. Так что теперь немного ошеломлен ... и наличие отладчика очень поможет в том, что я сейчас делаю:)

Строка подключения:

<add name="EOPDBContainer"      connectionString="metadata=res://*/Models.Entities.EOPDatabaseModel.csdl|res://*/Models.Entities.EOPDatabaseModel.ssdl|res://*/Models.Entities.EOPDatabaseModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;data source=xyz:1521/XE;password=xyz;persist security info=True;user id=xyz&quot;"
  providerName="System.Data.EntityClient"/>

Трассировка стека:

   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
   at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

Обращая внимание на эту ошибку ORA, есть предложения по использованию формата oracle для строки подключения, например (ОПИСАНИЕ = (АДРЕС = (PROTOCOL = tcp) (HOST = localhost) (PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORCL))) ...

Но,

  1. Как это работает в консоли со строкой подключения в формате EF тогда?

  2. Я пробовал это на всякий случай, но использование отформатированной строки соединения Oracle заставляет код перестать работать и в консоли ..

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...