无法在ASP.NET Core 1应用程序中使用oracle托管驱动程序

时间:2016-07-08 23:45:12

标签: c# asp.net oracle asp.net-core asp.net-core-1.0

我正在尝试从ASP.NET Core RC1迁移到1.0.0-preview2,但在使用之前正在运行的Oracle托管驱动程序时遇到问题。尝试创建新的OracleConnection时出现以下错误:

  

错误CS0012类型'DbConnection'在程序集中定义   没有引用。您必须添加对程序集'System.Data的引用,   版本= 4.0.0.0,文化=中立,   公钥= b77a5c561934e089' 。 Ludens.Data..NETCoreApp,版本= V1.0   16活跃

以下是我使用它的代码:

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"
      ]
    }
  }
}

我有一种感觉,我错误地指定了依赖关系,但弄清楚我错过了什么。请指教。

2 个答案:

答案 0 :(得分:3)

正如@LexLi所指出的,Oracle尚不支持.net核心,因此您将无法定位netcoreapp1.0。

但是,如果您只是针对Windows平台,则只需定位支持的.net框架:

"frameworks": {
  "net451": { }
}

这至少允许你在.net核心中开发,当Oracle支持到达时,升级应该只是修改你的project.json。

注意,如果您想对Oracle使用Entity Framework 7,这仍然无效,您需要等待受支持的库。

答案 1 :(得分:0)

我也得到了DbConnection错误。 对我有用的是添加对System.Data的引用,基本上错误告诉你这样做。 我花了一段时间来弄清楚它。

简而言之:

  • 右键点击项目的“参考”。
  • 点击“添加参考...”
  • 从.NET Framework 4.6.1(或类似)中,选择“System.Data”并单击“确定”。
  • VS将处理更改,错误将消失。