【问题标题】:Can't use oracle managed driver in ASP.NET Core 1 app无法在 ASP.NET Core 1 应用程序中使用 oracle 托管驱动程序
【发布时间】:2016-07-08 23:45:12
【问题描述】:

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

错误 CS0012 类型“DbConnection”在一个程序集中定义,该程序集是 未参考。您必须添加对程序集“System.Data”的引用, 版本=4.0.0.0,文化=中性, PublicKeyToken=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"
      ]
    }
  }
}

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

【问题讨论】:

  • Oracle 尚未宣布对 .NET Core 的支持,微软计划稍后增加支持。目前,如果你想瞄准 netcoreapp1.0,你只能购买 DevArt 的库来连接
  • 感谢@LexLi 的快速响应,微软正在努力改进,但总是缺少一些东西:)
  • 屏住呼吸等待。知道如何为 java 编写连接器吗?也许我可以为 .net 核心项目做出贡献。

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


【解决方案1】:

正如@LexLi 所指出的,Oracle 还不支持 .net 核心,因此您将无法以 netcoreapp1.0 为目标。

但是,如果您只针对 windows 平台,您可以简单地针对受支持的 .net 框架:

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

这至少可以让你在 .net core 中开发,当 Oracle 支持到来时,升级应该只是修改你的 project.json 的问题。

注意,如果您想针对 Oracle 使用 Entity Framework 7,这仍然不起作用,您需要等待支持的库。

【讨论】:

    【解决方案2】:

    我也遇到了那个 DbConnection 错误。 对我有用的是添加对 System.Data 的引用,基本上错误会告诉你这样做。 我也花了一段时间才弄明白。

    简而言之:

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

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      相关资源
      最近更新 更多