web-dev-qa-db-fra.com

Comment se connecter à une base de données Oracle Connexion à partir de .Net Core

Dans une bibliothèque .netCore, je souhaite me connecter à une base de données Oracle. Y a-t-il un moyen de le faire pour l'instant?

J'ai essayé les suggestions sur n autre SO post , mais cela ne fonctionne pas, peut-être supprimé depuis? Comme vous pouvez le voir dans mon projet.json, je suis en essayant d'utiliser "net461".

J'essaie actuellement d'utiliser Oracle.ManagedDataAccess.Client via ADO.Net. Je sais aussi que Oracle n'a pas encore acheté de connecteur .netCore. Mais même là, je ne peux pas le faire fonctionner, il a du mal à obtenir le System.Data , il se trompe chaque fois que j'essaie de l'ajouter.

Mon projet.json ressemble à ceci:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Oracle.ManagedDataAccess": "12.1.24160719",
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": [
        "dnxcore50",
        "net461"
      ]
    }
  }
}

C'est comme ça que j'essayais de le faire pour le moment.

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;
    }
}

Cependant, ce qui précède ne compile pas car il n’a pas System.Data, que je ne parviens pas à importer.

Je ne veux que la meilleure option raisonnable pour le moment .

20
David C

Version bêta du pilote .Net Core Managed publié par Oracle à la fin du mois de janvier 2018 http://www.Oracle.com/technetwork/ topics/dotnet/downloads/net-downloads-160392.html . Le support pris en charge dans la documentation est maintenant Win et Linux.

Nuget: https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core

Autres anciennes alternatives avec les clients Oracle standart/instant:

mon TestCore.csproj pour la dernière alternative:

<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>

Mon programme.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

Oracle envisage de certifier ODP.NET, pilote géré sur Microsoft .NET Core vers la fin de l'année civile 2017.
Oracle a l'intention de prendre en charge ODP.NET géré sur .NET Core sur les systèmes d'exploitation Windows et Oracle Linux. ODP.NET géré peut prendre en charge des systèmes d'exploitation supplémentaires. Oracle continuera à évaluer la prise en charge d'autres distributions Linux et annoncera des ajouts à la liste de certification à une date ultérieure. Oracle ne prévoit pas de certifier sur des versions antérieures à Microsoft .NET Core 2.0. .NET Core 2.0 contient de nombreuses fonctionnalités qui rendent possible la certification gérée ODP.NET sur le framework.

De cet article: http://www.Oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-core-sod-3628981.pdf

Mise à jour: version bêta publiée ODP.NET Core

5

Comme indiqué dans d'autres réponses, Oracle n'a pas encore publié de package pour son client géré, mais est prévu pour plus tard cette année.

Cependant, depuis la publication de .NET Standard 2.0, la bibliothèque System.Data.OracleClient a été mise à jour (disponible via NuGet). De toute évidence, ce n’est pas une solution idéale, car cette bibliothèque est obsolète, mais elle vous permet de travailler avec quelque chose. Vous pouvez simplement écrire un wrapper et l’échanger contre la bibliothèque Oracle officielle lorsqu’elle sera publiée.

3
Owen

Oracle vient de publier le fournisseur officiel de données pour .NET Core sur nuget.

Je l'ai installé et ça a l'air de bien fonctionner!

3
Rem

Basé sur équipe Oracle .NET Ils ont publié une nouvelle version bêta de ODP .NET Core;

Vous pouvez aussi le trouver ici

2
H.Al

Vous devez supprimer "dnxcore50" (cela signifie que votre projet n'est plus une application noyau .net pure) de project.json sous le noeud frameworks et réessayer. Autant que je sache, vous ne pouvez pas vous connecter à Oracle via .net POUR LE MOMENT, peut-être en vérifiant ce lien peut être utile

1
MSK

Pour ce faire, nous avons configuré un serveur lié à Oracle et utilisé des procédures stockées qui effectuent des appels vers le serveur lié à Oracle à partir du serveur SQL. Vous pourriez essayer ça. Vous pouvez utiliser Openquery ou Exec .. Sur [likedserver] pour exécuter les requêtes du côté Oracle.

0
user1775543

enfin, devart dotConnect for Oracle supporte .net depuis la version "9.4.280".

0
Ersin Tarhan