.netCoreライブラリ内で、Oracleデータベースに接続したい。まだできる方法はありますか?
another SO post で提案を試みましたが、機能しないため、おそらく削除されましたか?私のproject.jsonでわかるように、私は「net461」を使用しようとしています。
現在、旧式のADO.Net経由でOracle.ManagedDataAccess.Clientを使用しようとしています。また、Oracleが.netCoreコネクタをまだ購入していないことも知っています。しかし、そこでも動作させることはできません。System.Dataを含めるのに苦労し、追加しようとするとエラーになります。
私の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がないためコンパイルできません。System.Dataはインポートに苦労しています。
私はそれを行う特定の方法に固執していません、私はこの時点で最も合理的なオプションが欲しいだけです。
ベータリリース.2018年1月末にOracleがリリースしたNet Core Managedドライバーhttp://www.Oracle.com/technetwork/ topics/dotnet/downloads/net-downloads-160392.html 。 docでサポートされているplatfomのメンテセットは、WinとLinuxになりました。
Nuget: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core
Standart/instant 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>
私のprogram.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();
}
}
}
}
オラクルは、Microsoft .NET CoreのマネージドドライバーであるODP.NETを、暦年2017年末頃に認定する予定です。
Oracleは、WindowsオペレーティングシステムおよびOracle Linux上の.NET Coreで管理対象ODP.NETをサポートする予定です。 Managed ODP.NETは、追加のオペレーティングシステムをサポートする場合があります。オラクルは、他の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
他の回答で述べたように、オラクルはマネージドクライアント用のパッケージをまだリリースしていませんが、今年後半に予定されています。
ただし、.NET Standard 2.0のリリース時点で、System.Data.OracleClientライブラリが更新されています(NuGetを介して利用可能)。このライブラリは廃止されているため、明らかにこれは理想的なソリューションではありませんが、使用できるものがあります。ラッパーを作成し、リリース時に公式のOracleライブラリと交換することができます。
オラクルは、nugetで 。NET Coreの公式データプロバイダー を公開しました。
私はそれをインストールし、それはかなりうまくいくようです!
Oracle .NETチーム に基づき、新しいベータ版ODP。NET Coreをリリースしました;
また、それを見つけることができます こちら
Frameworksノードの下のproject.jsonから "dnxcore50"(これはプロジェクトが純粋な.netコアアプリケーションではないことを意味します)を削除して、再試行する必要があります。私の知る限り、.netコアを介してOracleに接続することはできませんFOR NOW、おそらくチェック このリンク 役に立ちます
これを行うには、Oracleリンクサーバーをセットアップし、SQLサーバーからOracleリンクサーバーを呼び出すストアドプロシージャを使用します。試してみてください。 [likedserver]でOpenqueryまたはExec ..を使用して、クエリをOracle側で実行できます。
最後にdevartの dotConnect for Oracle バージョン "9.4.280"以降の.netコアをサポートします。