无法在 ASP.NET Core 1 应用程序中使用 oracle 管理的驱动程序
Can't use oracle managed driver in ASP.NET Core 1 app
我正在尝试从 ASP.NET Core RC1 迁移到 1.0.0-preview2,但在使用之前运行的 Oracle 托管驱动程序时遇到问题。我在尝试创建新的 OracleConnection 时遇到以下错误:
Error CS0012 The type 'DbConnection' is defined in an assembly that is
not referenced. You must add a reference to assembly 'System.Data,
Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089'. Ludens.Data..NETCoreApp,Version=v1.0
16 Active
这是我使用它的代码:
using System;
using Oracle.ManagedDataAccess.Client;
using Microsoft.Extensions.Options;
using Ludens.Common;
using System.Data;
namespace Ludens.Data
{
public class LegacyContext : IDisposable
{
public IDbConnection Connection { get; }
public LegacyContext(IOptions<LudensSettings> options)
{
var appSettings = options.Value;
Connection = new OracleConnection(appSettings.Oracle.Connection);
Connection.Open();
}
public void Dispose()
{
Connection.Dispose();
}
}
}
还有我的 package.json:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Dapper": "1.50.0",
"Oracle.ManagedDataAccess": "12.1.24160419",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Ludens.Common": "1.0.0"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net451"
]
}
}
}
我觉得我错误地指定了依赖关系,但弄清楚我遗漏了什么。请指教
如@LexLi 所述,Oracle 尚不支持 .net 核心,因此您将无法定位 netcoreapp1.0。
但是,如果您只针对 windows 平台,您可以简单地针对受支持的 .net 框架:
"frameworks": {
"net451": { }
}
这至少允许您在 .net core 中进行开发,当 Oracle 支持确实到来时,升级应该只是修改您的 project.json.
请注意,如果您想对 Oracle 使用 Entity Framework 7,这仍然行不通,您需要等待支持的库。
我也遇到了 DbConnection 错误。
对我有用的是添加对 System.Data 的引用,基本上错误会告诉您这样做。
我也花了一段时间才弄明白。
简而言之:
- 右键单击项目的 "References"。
- 点击"Add Reference..."
- 从 .NET Framework 4.6.1(或类似版本),select "System.Data" 并单击“确定”。
- VS 将处理更改并且错误将消失。
我正在尝试从 ASP.NET Core RC1 迁移到 1.0.0-preview2,但在使用之前运行的 Oracle 托管驱动程序时遇到问题。我在尝试创建新的 OracleConnection 时遇到以下错误:
Error CS0012 The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Ludens.Data..NETCoreApp,Version=v1.0 16 Active
这是我使用它的代码:
using System;
using Oracle.ManagedDataAccess.Client;
using Microsoft.Extensions.Options;
using Ludens.Common;
using System.Data;
namespace Ludens.Data
{
public class LegacyContext : IDisposable
{
public IDbConnection Connection { get; }
public LegacyContext(IOptions<LudensSettings> options)
{
var appSettings = options.Value;
Connection = new OracleConnection(appSettings.Oracle.Connection);
Connection.Open();
}
public void Dispose()
{
Connection.Dispose();
}
}
}
还有我的 package.json:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Dapper": "1.50.0",
"Oracle.ManagedDataAccess": "12.1.24160419",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Ludens.Common": "1.0.0"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8",
"net451"
]
}
}
}
我觉得我错误地指定了依赖关系,但弄清楚我遗漏了什么。请指教
如@LexLi 所述,Oracle 尚不支持 .net 核心,因此您将无法定位 netcoreapp1.0。
但是,如果您只针对 windows 平台,您可以简单地针对受支持的 .net 框架:
"frameworks": {
"net451": { }
}
这至少允许您在 .net core 中进行开发,当 Oracle 支持确实到来时,升级应该只是修改您的 project.json.
请注意,如果您想对 Oracle 使用 Entity Framework 7,这仍然行不通,您需要等待支持的库。
我也遇到了 DbConnection 错误。 对我有用的是添加对 System.Data 的引用,基本上错误会告诉您这样做。 我也花了一段时间才弄明白。
简而言之:
- 右键单击项目的 "References"。
- 点击"Add Reference..."
- 从 .NET Framework 4.6.1(或类似版本),select "System.Data" 并单击“确定”。
- VS 将处理更改并且错误将消失。