EntityFramework 6 с Oracle: существует ли автономный ODAC (т. е. без ODBC) и должен ли он быть установлен на каждом клиентском ПК?

Пока моя установка VS 2013 Update 4 выполняется, я решил задать несколько вопросов, которые меня беспокоят и на которые потенциально легко ответить, поскольку я еще не мог проверить себя (из-за того, что до сих пор у меня была более старая версия VS). Кроме того, у меня вообще нет большого опыта работы с Oracle DB, мне просто пришлось использовать существующую, и она работала до сих пор, потому что кто-то другой сделал всю необходимую работу для ее запуска много лет назад.

Я должен использовать EntityFramework 6 вместе с этой существующей базой данных Oracle. Я знаю, что для этого мне нужен ODAC, и предположительно он должен быть самым новым (12.x). Что я сделал до сих пор, чтобы проверить, работает ли EF вообще с моей БД Oracle (11g):

  • Установите ODAC 11.2.0.3.20 из NuGet.
  • Установить EF 5 из NuGet

Затем все заработало нормально после некоторых сложностей с обновляемыми представлениями.

Теперь, чтобы запустить EF 6 с Oracle, мне сначала нужна более новая версия ODAC. Необходимо ли установить пакет из здесь, который содержит полноценный ODBC? На ПК уже есть его более старая версия. Доступна ли «автономная» установка ODAC или мне нужно удалить/переустановить весь пакет на моем ПК для разработки?

Чего я также не знаю: Нужна ли эта установка каждому клиенту, использующему программное обеспечение, или можно просто отправить DLL? Насколько мне известно, у каждого клиента уже есть ODBC. установку в своих системах, а также каждому назначен определенный пользователь БД, через которого они читают и манипулируют данными в БД, если это важно знать.

Заранее спасибо!


person InvisiblePanda    schedule 13.01.2015    source источник


Ответы (2)


Вы можете использовать управляемый драйвер ODP.NET (поставщик данных Oracle для .NET), который можно загрузить отсюда: Загрузки компонентов доступа к данным Oracle (ODAC).

Это всего лишь одна DLL (Oracle.ManagedDataAccess.dll), которую вы должны распространять. Он работает как для x86, так и для x64.

person Wernfried Domscheit    schedule 13.01.2015
comment
Означает ли это, что я должен загрузить маленькую версию XCopy, связанную там? И на этой странице говорится, что мне нужен 32-битный ODT для правильного использования дизайнера EF; так что могу ли я использовать полный пакет ODTwithODAC на моей машине разработки и по-прежнему отправлять этот единственный файл DLL при развертывании? Спасибо! - person InvisiblePanda; 13.01.2015
comment
Загрузите фрагмент ODP.NET_Managed121020.zip. Как я уже писал, нет никакой разницы, используете ли вы его для 32-битной или 64-битной версии. zip также содержит DLL для вашего EF (EF6/Oracle.ManagedDataAccess.EntityFramework.dll) - person Wernfried Domscheit; 13.01.2015
comment
Я загрузил полный пакет (ODTwithODAC), потому что нам предположительно нужны и другие вещи из него. Теперь я могу успешно ссылаться на упомянутую вами DLL и даже использовать вместе с ней дизайнер EF. Замечательно! Мне просто интересно: когда мы отправляем приложение, мы можем включить dll; но нужно ли пользователю на его клиентском ПК что-то еще? Например, нужно ли пользователю обновлять свою установку ODBC, или все будет работать, когда я отправлю dll? К сожалению, я пока не могу его протестировать. - person InvisiblePanda; 13.01.2015

Долгое время я использовал неуправляемый ODP.NET и даже тогда можно было использовать его в полностью автономном режиме (правда, приходилось тащить с приложением огромные DLL). Этот подход описан здесь на всякий случай.

Теперь все намного проще с управляемым ODP.NET. Я бы только добавил (к ответу Вернфрида), что если вы используете NuGet, вы можете установить управляемую версию из здесь. Но имейте в виду, что в этом пакете не поддерживаются распределенные транзакции.

person ialekseev    schedule 13.01.2015
comment
Будет ли это единственное, что мне нужно добавить в проект? Я немного ошеломлен тем, что NuGet показывает мне, когда я ищу ODP. Я предполагаю, что я мог бы также использовать материал ODP.EntityFramework. И мне все еще нужно установить 32-битный ODAC локально, чтобы использовать конструктор, как указывает домашняя страница оракула? Спасибо! - person InvisiblePanda; 13.01.2015
comment
Да, я считаю, что единственное, что вам нужно сделать, это загрузить эту зависимость из NuGet. Вместо этого попробуйте выполнить поиск odp.net.managed. Вам потребуется пакет с именем Oracle Data Provider for .NET (ODP.NET) Managed Driver. Что касается EntityFramework, я думаю, вам также необходимо установить зависимость odp.net.entityframework от Nuget. Но, честно говоря, я никогда раньше не использовал комбинацию EntityFramework + Oracle. Но если бы мне нужно было его использовать, я бы пошел в этом направлении: загружал все необходимые зависимости из NuGet. Это значительно упрощает развертывание и управление зависимостями. Надеюсь, у вас получится! - person ialekseev; 13.01.2015