Как подключиться к базе данных Oracle Подключение из .Net Core
В библиотеке .netCore я хочу подключиться к базе данных Oracle. Есть ли способ сделать это еще?
Я пробовал предложения по другому сообщению SO, но он не работает, возможно, удален с тех пор? Как вы можете видеть в моем проекте .json, я пытаюсь использовать "net461".
В настоящее время я пытаюсь использовать Oracle.ManagedDataAccess.Client через старомодный ADO.Net. Я также знаю, что Oracle еще не выкупила разъем .netCore. Но даже там я не могу заставить его работать, он изо всех сил пытается включить System.Datastrong > , это ошибки, когда я пытаюсь его добавить.
Мой project.json выглядит так:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Oracle.ManagedDataAccess": "12.1.24160719",
},
"frameworks": {
"netstandard1.6": {
"imports": [
"dnxcore50",
"net461"
]
}
}
}
Вот как я пытался это сделать в данный момент.
using Oracle.ManagedDataAccess.Client;
public class MyRepository
{
public string GetServerVersion()
{
var _db = new OracleConnection("User Id=myUser;Password=myPassword;Data Source=MyOracleConnection");
var serverVersion = _db.ServerVersion;
return serverVersion;
}
}
Однако выше не компилируется, поскольку у него нет System.Data, который я пытаюсь импортировать.
Я не укоренен в каком-либо конкретном способе этого делать, Я просто хочу наилучший разумный вариант на данный момент.
Ответы
Ответ 1
Бета-версия .Net Core Управляемый драйвер, выпущенный Oracle в конце января 2018 года http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html. Поддерживается платфом упоминаний в doc, теперь Win и Linux.
Nuget: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core
Другие старые альтернативы со стандартными/мгновенными клиентами Oracle:
мой TestCore.csproj для последней альтернативы:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Mono.Data.OracleClientCore" Version="1.0.0" />
</ItemGroup>
</Project>
Моя программа .cs:
using System;
using System.Data.OracleClient;
namespace TestCore
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting.\r\n");
using (var _db = new OracleConnection("User Id=myUser;Password=myPassword;Data Source=MyOracleConnection"))
{
Console.WriteLine("Open connection...");
_db.Open();
Console.WriteLine( "Connected to:" +_db.ServerVersion);
Console.WriteLine("\r\nDone. Press key for exit");
Console.ReadKey();
}
}
}
}
Ответ 2
Oracle планирует сертифицировать ODP.NET, управляемый драйвер в Microsoft.NET Core, примерно в конце 2017 календарного года.
Oracle намеревается поддерживать управляемый ODP.NET в .NET Core в операционных системах Windows и Oracle Linux. Управляемый ODP.NET может поддерживать дополнительные операционные системы. Oracle продолжит оценивать поддержку других дистрибутивов Linux и объявит о дополнениях в список сертификации в будущем. Oracle не планирует сертифицировать более ранние версии, чем Microsoft.NET Core 2.0. .NET Core 2.0 содержит множество функций, которые делают возможной управляемую сертификацию ODP.NET на платформе
Из этой статьи: http://www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-core-sod-3628981.pdf
Обновлено: бета-версия ODP.NET Core
Ответ 3
Как уже упоминалось в других ответах, Oracle еще не выпустила пакет для своего управляемого клиента, но планируется на конец этого года.
Однако, начиная с выпуска .NET Standard 2.0, была обновлена библиотека System.Data.OracleClient(доступна через NuGet). Очевидно, что это не идеальное решение, поскольку эта библиотека устарела, но она дает вам кое-что для работы - и вы можете просто написать обертку и поменять ее на официальную библиотеку Oracle, когда она будет выпущена.
Ответ 4
На основе команда Oracle.NET Они выпустили новую бета-версию ODP.NET Core;
Вы также можете найти здесь
Ответ 5
Oracle только что опубликовал официальный поставщик данных для .NET Core на nuget.
Я установил его, и, кажется, работает довольно хорошо!
Ответ 6
Вы должны удалить "dnxcore50" (это означает, что ваш проект больше не является чистым ядром приложения .net) из project.json в рамках node и повторите попытку. Насколько я знаю, вы не можете подключиться к оракулу через ядро .net ДЛЯ ТЕПЕРЬ, возможно, проверив эту ссылку полезно
Ответ 7
finally devart dotConnect для Oracle поддерживает .net core с версии "9.4.280".
Ответ 8
Мы это сделали, настроив сервер, связанный с oracle, и используя хранимые процедуры, которые вызывают вызовы связанного с Oracle сервера с SQL-сервера. Вы можете попробовать это. Вы можете использовать Openquery или Exec.. В [likedserver], чтобы выполнить запросы на стороне Oracle.
Ответ 9
Все работает в vs2017, но при публикации в контейнере Linux я получаю эту ошибку, используя System.Data.OracleClient: Невозможно загрузить DLL "oci": указанный модуль не может быть найден. (Исключение из HRESULT: 0x8007007E). Есть предложения? Нужно ли устанавливать клиент Oracle в контейнер Linux?