如何从.Net Core连接到Oracle数据库连接

在.netCore库中,我想连接到Oracle数据库。 我有什么方法可以做到吗?

我已经在另一个SOpost上尝试了这些建议,但它不起作用,也许从那以后就删除了? 正如你在我的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,我正在努力导入。

我没有根据任何特定的方式做到这一点, 我只想在这个时间点找到最合理的选择

测试版发布.Net核心托管驱动程序由Oracle于2018年1月底发布 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客户端的其他旧选择:

  • for .Net Core 2.0我建议使用ericmend oracleClientCore-2.0: https : //github.com/ericmend/oracleClientCore-2.0 。 Nuget: dotNetCore.Data.OracleClient我在Win和Linux平台上成功使用了它。 有我的小样本
  • 另外,System.Data.OracleClient也适用于2.0 – 请参阅@Owenpost。 但我只在Win平台上测试它
  • 对于.Net Core> = 1.0,您可以使用基于Mono的Oracle客户端https://github.com/LinqDan/oracleclientcore Nuget: Mono.Data.OracleClientCore的非官方LinqDan Oracle客户端进行.NET Core。

我的TestCore.csproj是最后一个选择:

   Exe netcoreapp1.0      

我的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(); } } } } 

Oracle计划在2017日历年左右对Microsoft .NET Core上的ODP.NET,托管驱动程序进行认证。
Oracle打算在Windows操作系统和Oracle Linux上支持.NET Core上的托管ODP.NET。 托管ODP.NET可能支持其他操作系统。 Oracle将继续评估对其他Linux发行版的支持,并将在未来宣布添加到认证列表中。 Oracle不打算在早于Microsoft .NET Core 2.0的版本上进行认证。 .NET Core 2.0包含许多function,可以在框架上进行托管ODP.NET认证

来自这篇文章: http : //www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-core-sod-3628981.pdf

更新:Beta发布了ODP.NET Core

正如其他答案所述,甲骨文尚未发布其托管客户端软件包,但计划在今年晚些时候推出。

但是,自.NET Standard 2.0发布以来,System.Data.OracleClient库已更新(可通过NuGet获得)。 显然这不是一个理想的解决方案,因为该库已经过时,但它确实为您提供了一些东西 – 您可以编写一个包装器并在发布时将其交换为官方Oracle库。

基于Oracle .NET团队他们发布了一个新的测试版ODP .NET Core;

你也可以在这里找到它

您应该从frameworks节点下的project.json中删除“dnxcore50”(这意味着您的项目不再是纯粹的.net核心应用程序),然后再试一次。 据我所知,你无法通过.net核心连接到oracle 现在 ,也许查看此链接可能会有所帮助

Oracle刚刚在nuget上发布了针对.NET Core的官方数据提供程序 。

我安装它似乎工作得很好!

自版本“9.4.280”以来,最终devart的dotConnect for Oracle支持.net核心。

我们通过设置oracle链接服务器并使用从SQL服务器调用Oracle链接服务器的存储过程来完成此操作。 你可以尝试一下。 您可以使用Openquery或Exec ..在[likesserver]中使查询在Oracle端执行。