powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
16 сообщений из 41, страница 2 из 2
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805702
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объясните, зачем городить рефлексию в данным случае?
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805720
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123BRS_1,
Какая критика. Субд 9ка это субд прошлого тысячилетия. От того что нет апдейта ПО страдают все. И код в том числе.

Субд у нас сейчас 11 версия, а вот клиент остался местами 9 версии, местами 11.
Насчет страданий - все зависит от обстоятельств. В нашем случае с повышением ничего не измениось, как впрочем не изменилось бы и с понижением с 11 на 9 субд.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805722
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesобъясните, зачем городить рефлексию в данным случае?

Есть более простое решение? С удовольствием ознакомлюсь.

Всё переинсталить, отформатировать, перейти на линукс, сменить страну/планету - не предлагать.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805724
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Есть более простое решение? С удовольствием ознакомлюсь.
Ну, хотя бы всю работу с рефлекшеном вынести в отдельный класс, чтобы на каждое действие с базой не писать огромную простыню работы с рефлекшеном.
Ну, и как бы выше я еще предлагал вариант с перенаправлением сборок в конфиге.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805725
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Субд у нас сейчас 11 версия, а вот клиент остался местами 9 версии, местами 11.не понял.
Так в чем изначальная ПРОБЛЕМА?
Как автоматом проапгрейдить клиента оракла у клиентов?
Или использовать подключение к базе не требуещее клиента оракле на машине?
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805732
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать 2 поставщика данных для 11 и 9 версии, определить интерфейсы взаимодействия которые будут общими для обоих поставщиков . Это всяко лучше, чем городить вот такой говнокод, от которого кровь из глаз, а потом и из зада пойдет, если надо будет это поддерживать.
Таким образов вы абстрагируйтесь от клиента СУБД и его версии, будет совершенно не важно, Oracle это или MSSQL.
Динамически загружать нужный и возвращать интерфейс взаимодействия. И работать с ним по человечески, а не вот таким чудесным образом, как у вас...
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805745
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesданных для 11 и 9 версиида. Но выше он вообще сказал что 9ку убрали.
Непонятно.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805753
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныНу, хотя бы всю работу с рефлекшеном вынести в отдельный класс, чтобы на каждое действие с базой не писать огромную простыню работы с рефлекшеном.

Согласен, но поленился т.к. программа примитивная (старт, один запрос данных, сохранение в файл, завершение работы).

Сон Веры ПавловныНу, и как бы выше я еще предлагал вариант с перенаправлением сборок в конфиге.

Было дело, но на тот момент не смог разобраться.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805788
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Согласен, но поленился т.к. программа примитивная (старт, один запрос данных, сохранение в файл, завершение работы).
как это согласуется с:
BRS_1Есть более простое решение? С удовольствием ознакомлюсь.
Всё переинсталить, отформатировать, перейти на линукс, сменить страну/планету - не предлагать.
?
Я так понял, что такого решение как вы привели - нельзя использовать в реальной жизни.
Удачи!
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805869
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Я так понял, что такого решение как вы привели - нельзя использовать в реальной жизни.
Удачи!

Наверное, мы друг друга не понимаем.

Есть два файла Oracle.DataAccess.dll (v.9.2.0.700) и Oracle.DataAccess.dll (v.2.112.1.0) .
В программу я могу подключить только один из них.
На одних компьютерах программа скомпилированная с DLL от 9 оракла будет работать, на других нет.
И наоборот, на тех компьютерах, где не работает программа с DLL от 9 оракла - там будет работать программа с DLL от 11 оракла.

Что хотелось - получить один универсальный билд программы, который будет подключать необходимую DLL из двух и работать.
(При этом ничего и нигде не переустанавливать, не приводить все компы к одному программному единообразию и не менять ландшафт вручную).

В результате написания - программа работает как и хотелось, но получился такой вот страшный код.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805871
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1Наверное, мы друг друга не понимаем.ну дак разговаривай, для этого и форум.
Где ответ - какие у тебя сервера для коннекта?
У меня вот вроде, из NuGet дрова к ораклу стоят.
Получается, что не ответив на вопросы выше ты зря написал это:
BRS_1Есть два файла Oracle.DataAccess.dll (v.9.2.0.700) и Oracle.DataAccess.dll (v.2.112.1.0) .
В программу я могу подключить только один из них.
На одних компьютерах программа скомпилированная с DLL от 9 оракла будет работать, на других нет.
И наоборот, на тех компьютерах, где не работает программа с DLL от 9 оракла - там будет работать программа с DLL от 11 оракла.

Что хотелось - получить один универсальный билд программы, который будет подключать необходимую DLL из двух и работать.
(При этом ничего и нигде не переустанавливать, не приводить все компы к одному программному единообразию и не менять ландшафт вручную).

В результате написания - программа работает как и хотелось, но получился такой вот страшный код.
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805873
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRS_1,

создаете сборку Х, описывайте в ней все интерфейсы взаимодействия вашего клиентского приложения с базой или более примитивные вещи
создаете сборку У, подключаете к ней сборку X и сборку клиента 9 версии, создаете в сборке классы реализующие интерфейсы из сборки X, через 9 клиент
создаете сборку Z, подключаете к ней сборку X и сборку клиента 11 версии, создаете в сборке классы реализующие интерфейсы из сборки X, через 11 клиент
подключаете сборку X в свою клиентскую программу, пишите код который осуществляет вызов нужных вам методов через интерфейсы определенные в сборке X. Во время запуска в Runtime загружает либо сборку У, либо сборку Z, создаете экземпляр объектов реализующий интерфейс из сборки X и используйте его через интерфейс.

интерфейсы именно для этого и придумали.
есть подозрения, что клиент 9 и 11 версии уже реализуют интерфейсы пространства имен System.Data
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39805998
BRS_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Благодарю, попробую
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39806022
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>BRS_1, 30 июл 18, 22:03 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300032&msg=21616255][21616255]
>...Подскажите, если нельзя добавить обе в проект…
<Посмотрите здесь .
Работаю так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      reader = null; wspErr = null; bMax = false;
      int n = (psp==null)? 0: psp.Length;
      OracleParameter[] asp = new OracleParameter[n+1];
      asp[0]= new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output);
      try {
        for (int i=0;i<n;i++) {
          switch (psp[i].Length) {
            case 2: asp[i+1] = new OracleParameter((string)psp[i][0], psp[i][1]); break;
            case 3: asp[i+1] = new OracleParameter((string)psp[i][0], OracleDbType.Raw, (int)psp[i][1], psp[i][2], ParameterDirection.Input); break;
          }
        }
        using (OracleConnection connection = new OracleConnection(гп.str_Соединение)) {
          connection.Open();
          OracleCommand command = new OracleCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = spname;
          command.CommandType = CommandType.StoredProcedure;

          //-- Формируем коллекцию из выборки
          using (reader = (OracleDataReader)command.ExecuteReader()) { sp(RowToEntity); }
        }
      }
      catch (Exception ex){ wspErr = ex.Message; }
    }
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39806025
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>BRS_1, 30 июл 18, 22:03 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1300032&msg=21616255][21616255]
>...Подскажите, если нельзя добавить обе в проект…
<Посмотрите здесь .
Работаю так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      reader = null; wspErr = null; bMax = false;
      int n = (psp==null)? 0: psp.Length;
      OracleParameter[] asp = new OracleParameter[n+1];
      asp[0]= new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output);
      try {
        for (int i=0;i<n;i++) {
          switch (psp[i].Length) {
            case 2: asp[i+1] = new OracleParameter((string)psp[i][0], psp[i][1]); break;
            case 3: asp[i+1] = new OracleParameter((string)psp[i][0], OracleDbType.Raw, (int)psp[i][1], psp[i][2], ParameterDirection.Input); break;
          }
        }
        using (OracleConnection connection = new OracleConnection(гп.str_Соединение)) {
          connection.Open();
          OracleCommand command = new OracleCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = spname;
          command.CommandType = CommandType.StoredProcedure;

          //-- Формируем коллекцию из выборки
          using (reader = (OracleDataReader)command.ExecuteReader()) { sp(RowToEntity); }
        }
      }
      catch (Exception ex){ wspErr = ex.Message; }
    }
...
Рейтинг: 0 / 0
Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
    #39806028
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть из всего кода что ты скопипастил по теме только это:
ВМоисеев
Код: plsql
1.
new OracleConnection(гп.str_Соединение))
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Oracle.DataAccess.dll двух версий в одном проекте. Как реализовать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]