Dav*_*d C 21 c# oracle database-connection asp.net-core
在.netCore库中,我想连接到Oracle数据库.我有什么方法可以做到吗?
我已经在另一个SO帖子上尝试了这些建议,但它不起作用,也许从那以后就删除了?正如你在我的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"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我此刻尝试这样做的方式.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是上面没有编译,因为它没有System.Data,我正在努力导入.
我没有根据任何特定的方式做到这一点,我只想在这个时间点找到最合理的选择.
Dub*_*ubo 13
甲骨文于2018年1月底发布的Beta版.Net Core Managed驱动程序 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>
Run Code Online (Sandbox Code Playgroud)
我的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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Oracle在 nuget 上发布了用于 .NET Core的官方数据提供程序。
下面是一个展示如何使用它的基本示例:
using Oracle.ManagedDataAccess.Client;
public void Execute(string queryString, string connectionString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand command = new OracleCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
基本上你可以像官方的 .NET System.Data.SqlClient 一样使用它(很容易找到在线教程),只需将代码中的 SqlConnection 替换为 OracleConnection,将 SqlCommand 替换为 OracleCommand。
Oracle计划在2017日历年左右对Microsoft .NET Core上的ODP.NET,托管驱动程序进行认证
.Oracle打算在Windows操作系统和Oracle Linux上支持.NET Core上的托管ODP.NET.托管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
更新:Beta发布了ODP.NET Core
如果您使用带有.NET core的oracle数据库,那么需要安装一些nuget包。
之后需要在启动类的configureServices方法中编写一些代码。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<OracleDbContext>(options=>options.UseOracle(Configuration.GetConnectionString("OracleConnection")));
}
Run Code Online (Sandbox Code Playgroud)
OracleDbContext 类继承自 DbContext 类,OracleConection 连接字符串在 appSettings.json 文件中设置。
OracleDbContext.cs
public class OracleDbContext : DbContext
{
public OracleDbContext(DbContextOptions options):base(options){}
}
Run Code Online (Sandbox Code Playgroud)
应用程序设置.json
{
"ConnectionStrings":{
"OracleConnection":"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=
(PROTOCOL=TCP)(HOST={url of your database})(PORT={port})))(CONNECT_DATA=
{name of your database for ex: SID})));User Id={user id};password=
{password}:"
}
}
Run Code Online (Sandbox Code Playgroud)
括号{}中的值需要替换。当数据库位于服务器上而不是本地时,使用此连接字符串。
| 归档时间: |
|
| 查看次数: |
39155 次 |
| 最近记录: |