Наличие консольного приложения. 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="data source=xyz:1521/XE;password=xyz;persist security info=True;user id=xyz""
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))) ...
Но,
Как это работает в консоли со строкой подключения в формате EF тогда?
Я пробовал это на всякий случай, но использование отформатированной строки соединения Oracle заставляет код перестать работать и в консоли ..
Спасибо!