Нужно ли перекомпилировать приложение.NET после обновления базы данных Oracle?

У меня есть два приложения, разработанные в C# .NET, которые атакуют базу данных Oracle 11g, теперь клиент планирует обновить базу данных до Oracle 12c. Одно из приложений - это служба Windows, а другое - приложение для ПК. На данный момент я использую Oracle.DataAccess.dll версия 2.112.2.0 и она работает правильно. Будут ли мои приложения работать должным образом после обновления или я должен перекомпилировать свои приложения с другой DLL? спасибо заранее

5 ответов

Давайте поймем ваш вопрос немного иначе и разберемся, что для него меняется, хотя для стека приложений база данных Oracle обновляется до 12c, но для вашего кода точка контакта является ODP.Net (Oracle.DataAccess.dll)где вы используете определенный version-2.112.2.0Теперь перекомпиляция зависит от того, работает ли текущая версия ODP.Net с Oracle 12c, если это не так, вам нужно получить более новую совместимую версию, а это означает перекомпиляцию, но даже в этом случае вы можете избежать ее. путем добавления более нового двоичного файла ODP.Net в GAC и использования перенаправления привязки в файле конфигурации, что означает, что даже если он был скомпилирован со старой версией во время выполнения, он загружает более новую версию, что означает отсутствие исключений времени выполнения, это делается во многих производственных системах, когда вводятся более новые зависимые двоичные файлы, поскольку интерфейсы редко меняются, если вы хотите использовать какой-либо новый API, вам, безусловно, нужно перекомпилировать и повторно развернуть. Также проверьте ссылку - Включение автоматической привязки перенаправлений вручную

Ниже будет настройка app.config:

<configuration>
  <runtime>
<dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess"
          publicKeyToken="-- ODP.Net Public Token --"
          culture="en-us" />
             <bindingRedirect oldVersion="2.112.2.0" newVersion="-- New Version --" />
      </dependentAssembly>

  </runtime>
</configuration>

Теоретически вам не нужно перекомпилировать. Но просто проанализировав свой код, вы будете в этом уверены. Итак, спланируйте и выполните регрессионное тестирование всех функций в служебных и настольных приложениях, чтобы убедиться в этом.

Зависит от того, какие функции устарели в версии 12, которые вы, возможно, использовали. Это одна версия, и такие компании, как Oracle, прилагают все усилия, чтобы сделать новые версии обратно совместимыми. Или, возможно, в новой версии есть ошибки, которые вызывает ваш код, но это маловероятно. Я ожидаю, что тестирование и тесты пройдут, и мне не придется тратить много времени на это.

Только вы можете ответить на ваш вопрос, так как мы не можем знать, какие функции использует ваше приложение в Oracle.DataAccess, Выполните обновление в отдельной тестовой среде и, конечно, выполните тщательное тестирование.

Нет, это должно работать так же. В очень редких случаях вы можете использовать функции в Oracle 11g, которые были удалены из Oracle 12c. Даже в этом случае вам, скорее всего, придется изменить свой реальный код, а не обновлять его до новой версии ODP.NET (Oracle.DataAccess.dll).

Проверьте этот документ на наличие удаленных функций: устаревшие и неподдерживаемые функции для Oracle Database 12c

Другие вопросы по тегам