Как написать приложение .Net, которое работает с SqlServer и Oracle (теперь, когда System.Data.OracleClient устарела)

Еще одно преимущество: поскольку вы знаете, что Java не поддерживает множественное наследование, поэтому, если вы используете класс типа «Thread» как анонимный класс, тогда класс по-прежнему имеет одно пространство, оставшееся для расширения любого другого класса.

30
задан Community 23 May 2017 в 12:34
поделиться

13 ответов

РЕДАКТИРОВАТЬ: Полностью управляемый ODP.NET теперь доступен в рабочей среде. Он очень маленький (менее 10 МБ) и не зависит от других файлов. Вы можете получить его здесь:

http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

Исходный ответ:

Один способ легко обеспечить что необходимое программное обеспечение на стороне клиента Oracle (включая ODP.NET) всегда доступно на машине развертывания, означает встроить его в ваше приложение. ODP.NET получил лот , который легче встраивать, теперь, когда доступен XCOPY ODP.NET. Вы можете скачать его по этой ссылке:

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

С XCOPY ODP.NET все, что вам нужно делать, когда вы разверните ваше приложение следующим образом:

1) Скопируйте приложение на целевую машину

2) Запустите «install.bat», который копирует пару библиотек Oracle DLL на целевую машину (включая ODP.NET и программное обеспечение клиентской стороны Oracle (OCI))

3) Запустите "configure.bat", который выполняет "gacutil" и обновляет реестр целевой машины

4) Предоставьте вашему приложению информацию о строке подключения. Вы можете использовать строку подключения EZCONNECT ("имя хоста @ servicenameХорошая новость заключается в том, что типичная установка Oracle на вашем клиентском компьютере уже будет включать ODP.NET.

Теперь, если на вашей целевой машине уже установлен ODP.NET, вам больше ничего делать не нужно. Вам просто нужно распространить свое приложение. Если вам действительно нужно установить ODP.NET с помощью стандартного установщика, вы также можете скачать его по указанной выше ссылке. Стандартная установка ODP.NET занимает всего несколько минут и настраивает все за вас.

И снова вы можете использовать строки подключения EZConnect, чтобы упростить настройку сети, или использовать запись реестра TNS_ADMIN или переменную среды, чтобы воспользоваться преимуществами существующих псевдонимов подключения, к которым ваш клиент уже привык.

Надеюсь, это поможет, http://apex.oracle.com/pls/apex/f?p=18357:46

6
ответ дан 27 November 2019 в 22:48
поделиться

Заказчик должен установить odp.net и клиент Oracle на свои машины. Вы не должны его развертывать. Ваше приложение найдет необходимые библиотеки DLL Oracle в GAC.

0
ответ дан 27 November 2019 в 22:48
поделиться

По моему опыту, вы не можете просто развернуть DLL поставщика данных ODP.NET. Oracle требует установки Home для чего-либо большего, чем конфигурация по умолчанию (например, мы используем разрешение имен LDAP, требуя файл LDAP.ora в специальном домашнем пути).

Однако ODP.NET реализует стандарты ADO.NET 2.0 просто отлично (DbProviderFactory и т. д.). И я запрограммировал базовые классы (DbConnection, DbCommand и т. Д.) Без какой-либо потребности в определенных классах в течение некоторого времени в моей компании.

Мое предложение для работы с этим доступом к данным - использовать / следовать указаниям в Entlib или используйте NHibernate .

Если у вас возникли проблемы с логистикой или ИТ при установке ODP.NET или доставке его вашему клиенту / клиенту, я предлагаю вам поговорить с ИТ-специалистами и Oracle о решениях для этого.

0
ответ дан 27 November 2019 в 22:48
поделиться

Возможно ли использование ODBC для обоих?

1
ответ дан 27 November 2019 в 22:48
поделиться

Я считаю, что ODBC все еще может использовать как SQL Server, так и Oracle с некоторой прозрачностью, поэтому я хотел бы взглянуть на использование ADO.Net с поставщиком ODBC. Он не даст вам всей производительности или функций, которые предоставили бы SqlClient или OracleClient, но он должен быть довольно близок к тому же коду для Oracle или SQL Server.

1
ответ дан 27 November 2019 в 22:48
поделиться

Вы можете рассмотреть возможность использования SubSonic 3.0 ! Он запускает мое приложение на базе SQLServer, MySQL и SQLite, и пользователь может переключаться между этими тремя во время выполнения!

0
ответ дан 27 November 2019 в 22:48
поделиться

Вот рабочий CSS, протестированный в Firefox / IE7 / Safari / Chrome / Opera.

* {margin:0px;padding:0px;overflow:hidden}
div {position:absolute}
div#header {top:0px;left:0px;right:0px;height:60px}
div#wrapper {top:60px;left:0px;right:0px;bottom:0px;}
div#left {top:0px;bottom:0px;left:0px;width:50%;overflow-y:auto}
div#right {top:0px;bottom:0px;right:0px;width:50%;overflow-y:auto}

"overflow-y" не одобрен w3c, но его поддерживают все основные браузеры. . Два ваших div #left и #right будут отображать вертикальную полосу прокрутки, если их содержимое слишком велико.

Чтобы это работало в IE7, вы должны активировать режим, соответствующий стандартам, добавив DOCTYPE:

      < тип стиля = "                  
2
ответ дан 27 November 2019 в 22:48
поделиться

Пока вы не вызываете объект ODP.Net, вам не нужно устанавливать ODP, если вы обращаетесь только к SQL Server.

1
ответ дан 27 November 2019 в 22:48
поделиться

Используйте «Шаблон фабрики поставщиков», который в основном использует фабрику для предоставления поставщика данных, который полностью абстрагируется от методов запроса базы данных, которые его используют. Вот blogpost с примером кода, который также показывает, как это сделать. Жан-Поль Буду о демистификации шаблонов дизайна Часть 1 на dnrtv.com также показывает, как это сделать.

Это очень крутые вещи, в основном вы иметь фабрику, которая предоставляет методы для получения соединения

public IDbConnection GetConnection()
{
     IDbConnection connection =  _frameworkDBProviderFactory.CreateConnection();
     connection.ConnectionString = _authenticationSettings.ConnectionString;            
     return connection;
} 

через интерфейс, чтобы вы могли вызывать любой тип базы данных, объект подключения которой реализует интерфейс IDbConnection (SQLServer, MySQL, Oracle и т. д.), и он просто работает.

Абстрагируясь от того, какую БД вы используете, вы даже можете менять их во время выполнения, и ваше приложение никогда не узнает, это не так.Для подключения к Orical DB необходимо загрузить ODP.NET , то же самое с соединителем mysql и реализовать IDbConnection, и написать свой код для абстрактного соединения.

3
ответ дан 27 November 2019 в 22:48
поделиться

Существует большая разница между устареванием и удалением.

Если вы просто используете подмножество функций, которые являются общими для SQL Server и Oracle, тогда все будет в порядке. переходя к ASP.Net 4.0 и продолжая программировать, как вы это делаете сейчас.

Использование чего-то вроде EntitySpaces позволит вам быть относительно независимым от провайдера. (он использует OracleClient в своем DAL)

Полностью согласен с Филиппом в том, что клиентское программное обеспечение Oracle является проблемой. Я потерял счет, сколько раз устанавливал его, и мне это не нравилось. Дайте мне предпочтение MySQL, SQLServer или даже Access.

(На самом деле, я забираю комментарий Access): -)

3
ответ дан 27 November 2019 в 22:48
поделиться

Вы смотрели на альтернативных провайдеров Oracle, таких как dotConnect devArt? Этот драйвер, например, представляет собой 100% управляемый код, поддерживает множество расширенных функций Oracle, обеспечивает поддержку Entity Framework (я уверен, что когда-нибудь это появится в ODP.NET).

Есть множество других функций (например, поддержка модели поставщика ASP.NET), которые мы не получили до выпуска ODP.NET 11g. Довольно либеральное лицензирование и разумная цена. Также, если я правильно помню, идет собственный профайлер.

В их тестах работает лучше по сравнению с ODP.NET. Я хотел бы указать вам на что-то с открытым исходным кодом, но, по моему опыту, после того, как вы приобрели Oracle в качестве базы данных, вы уже приняли тот факт, что вы откладываете немного денег на свои инструменты, связанные с базой данных .

5
ответ дан 27 November 2019 в 22:48
поделиться

Быть независимым от базы данных - очень сложная работа, потому что есть много специфических вещей (связывание имен переменных, цитата объектов, ...). Используйте такую ​​библиотеку, как NHibernate , которая помещает слой между вашим приложением и реальной базой данных.

Если вам нужно подключиться к обеим базам данных, то это вопрос развертывания. Если вы подключаетесь к Oracle (используя System.Data.OracleClient или Oracle.DataAccess.Client), вам необходимо установить клиентское программное обеспечение Oracle на вашем компьютере. Поставщика базы данных, развернутого с помощью фреймворка, недостаточно для подключения к базе данных oracle.

Если вы подключаетесь к oracle, вам необходимо установить программное обеспечение из oracle. Если вы опасаетесь устаревания, установите и используйте ODP.Net. Есть некоторые различия между двумя поставщиками баз данных Oracle.

Для лучшего развертывания Oracle представил концепцию мгновенного клиента . Этот клиент можно развернуть с помощью развертывания xcopy. Sine oracle 11 мгновенный клиент может быть связан с ODP.Net.

Установка ODP.Net описана в сообщении Кристиана Шэя.

Сборка Oracle.DataAccess не должна находиться в глобальном кэше сборок. Поместите его в каталог bin. Мгновенный клиент, используемый Oracle.DataAccess, не должен находиться в другом каталоге на вашем клиентском компьютере. Поместите его в каталог bin. В документации описано, как настроить приложение для поиска мгновенного клиента.

2
ответ дан 27 November 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: