web-dev-qa-db-ja.com

.Net CoreからOracleデータベース接続に接続する方法

.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はインポートに苦労しています。

私はそれを行う特定の方法に固執していません、私はこの時点で最も合理的なオプションが欲しいだけです

20
David C

ベータリリース.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();
            }           
        }
    }
}
14
Dubo

オラクルは、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ライブラリと交換することができます。

3
Owen

オラクルは、nugetで 。NET Coreの公式データプロバイダー を公開しました。

私はそれをインストールし、それはかなりうまくいくようです!

3
Rem

Oracle .NETチーム に基づき、新しいベータ版ODP。NET Coreをリリースしました;

また、それを見つけることができます こちら

2
H.Al

Frameworksノードの下のproject.jsonから "dnxcore50"(これはプロジェクトが純粋な.netコアアプリケーションではないことを意味します)を削除して、再試行する必要があります。私の知る限り、.netコアを介してOracleに接続することはできませんFOR NOW、おそらくチェック このリンク 役に立ちます

1
MSK

これを行うには、Oracleリンクサーバーをセットアップし、SQLサーバーからOracleリンクサーバーを呼び出すストアドプロシージャを使用します。試してみてください。 [likedserver]でOpenqueryまたはExec ..を使用して、クエリをOracle側で実行できます。

0
user1775543

最後にdevartの dotConnect for Oracle バージョン "9.4.280"以降の.netコアをサポートします。

0
Ersin Tarhan