2015-12-14 3 views
1

я могу подключиться к базе данных просто отлично, если бы я это сделатьF #, SqlDataProvider и Oracle

let connection = new Oracle.DataAccess.Client.OracleConnection("User Id=hr;Password=hr;Data Source=localhost") 
    connection.Open() 

Это, однако, не будет работать

#r "FSharp.Data.SqlProvider" 
open FSharp.Data.Sql   
type sql = SqlDataProvider< 
      ConnectionString = "User Id=hr;Password=hr;Data Source=localhost", 
      DatabaseVendor = Common.DatabaseProviderTypes.ORACLE, 
      ResolutionPath = "C:\apps\Oracle\product\12.1.0", 
      Owner = "hr"> 

Компилятор говорит:

The type provider 'FSharp.Data.Sql.SqlTypeProvider' reported an error: Exception of type 'System.Collections.Generic.KeyNotFoundException' was thrown.

Мое лучшее предположение - проблема с моей резолюцией. Решение, которое я вставил здесь, принадлежит моему клиенту Oracle. Я также попробовал ResolutionPath из [OracleClient] \ bin и получил тот же результат.

ответ

0

Ключ UserId должен иметь пробел между «User» и «Id», как в вашей рабочей строке соединения.

+0

Извините, это была плохая паста с моей стороны. У SqlDataProvider было пробел между «User» и «Id» в моем коде. Не работает. –

2

Путь разрешения вашего Oracle должен указывать на ODP.NET Oracle (поставщик данных Oracle для .NET) вместо обычного пути установки Oracle Database Oracle 12c. Поскольку базовая установка базы данных Oracle с Oracle 11g, а затем 12c, не может быть гарантирована надлежащим образом включать установку ODP.NET. Также установка ODP.NET не зависит от любой установки базы данных Oracle на вашем компьютере.

Вы можете скачать ODP.NET, перейдя в Oracle Data Access (ODAC) для страницы с Windows: http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

Затем загрузите поставщик ODP.NET для ваших конкретных потребностей, либо 32 или 64 бит. Установите последнюю версию ODP.NET, а затем укажите ResolutionPath на путь установки ODP.NET, особенно папку, содержащую общую DLL ODP.NET.

Сообщите мне, если у вас все еще есть проблемы. Удачи!

+0

Я следил за ссылкой и загружал ODP.NET_Managed ... zip, затем распаковывал и следил за инструкциями по установке. Нет кубиков. Если я попробую другие типы поставщиков - MSSQL или POSTGRESQL, то я получу ошибки, которые имеют больше смысла - они скажут такие вещи, как «не удалось подключиться» или не смогли найти «foo.dll». Кажется, что есть что-то по своей сути сломанное с использованием Oracle. –

+1

@JordanWilcken Я знаю, что это старый пост, но у вас все еще есть проблемы? У меня было много проблем с получением SqlDataProvider для работы с Oracle, но я, наконец, все понял. Если бы я был вами, я бы попытался использовать проект Visual Studio вместо интерактивного режима. Я не закончил использовать аргумент ResolutionPath - я только что установил Oracle.ManagedDataAccess в свой проект с помощью NuGet. – jaromey

Смежные вопросы