vivanov vivanov - 4 months ago 171
ASP.NET (C#) Question

Can't use oracle managed driver in ASP.NET Core 1 app

I am trying to move from ASP.NET Core RC1 to 1.0.0-preview2 but having problems using Oracle managed driver that was working before. I am getting a following error trying to create a new 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


Here is a code where I use it:

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


Also here is my 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"
]
}
}
}


I have a feeling that I incorrectly specify dependencies but figure out what I am missing. Please advice.

Answer

As was noted by @LexLi Oracle doesn't yet support .net core so you won't be able to target netcoreapp1.0.

However, if you're only targeting windows platform, you can simply target a supported .net framework:

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

This will at least allow you to develop in .net core, and when Oracle support does arrive, upgrading should just be a matter of amending your project.json.

Note, if you want to use the Entity Framework 7 against Oracle, this still won't work, you'll need to wait for a supported library.