2016-02-19 2 views
0

В новом проекте WebAPI (с использованием ASP.NET Core 1.0) у нас есть требование запросить унаследованную базу данных «Pervasive SQL» с помощью поставщика ADO.NET, который они предоставляют. Однако у них нет провайдера EF6, поэтому мы застреваем с помощью EF5.Требуется ли dnx46 по крайней мере .NET Framework 4.5.1?

Пропуск платформы Entity Framework и использование ADO.NET PSqlConnection напрямую требует «System.Data 2.0.0.0». Это заставляет меня думать, что поставщик скомпилирован на .NET Framework 2.0 (или 3.5).

project.json

"frameworks": { 
    "net451": { }, 
    "dnx46": { 
     "dependencies": { 
     "EntityFramework": "5.0.0", 
     "Pervasive.Data.SQLClient.Entity": "1.0.0-*", 
     "Pervasive.Data.SqlClient": "1.0.0-*", 
     "Pervasive.Data.Common": "1.0.0-*" 
     } 
    } 
    } 

Запуск "ДНУ сборки" результаты в следующем за исключением

xx\..\Controllers\ValuesController.cs(22,18): DNX,Version=v4.6 error CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 

Build failed. 
    0 Warning(s) 
    2 Error(s) 

Реальный вопрос: ли dnx46 требуется, по крайней мере .NET Framework 4.5.1? Или как-то возможно ссылаться на .NET Framework 3.5 (или 2.0) из ASP.NET Core 1.0?

ответ

1

Версия прозвища говорит вам: для этого требуется .NET Framework 4.6.

Для 4.5.1 вам нужен прозвище dnx451.

Но суть в том, 4.5 минимальная структура для использования нового ASP.NET Core 1.0 (ASP.NET 5). Вы можете увидеть матрицу и как прозвище работать на странице «.Net Platform Standard» на github.

Наблюдения

  • Если библиотека целей .NET Platform Standard версии 1.3, он может работать только на платформе .NET Framework 4.6 или более поздней версии, Universal платформы Windows 10 (UWP), DNX Ядра 5.0 и Mono/Платформы Xamarin.
  • Если библиотека предназначена для платформы .NET Platform Standard версии 1.3, она может потреблять библиотеки из всех предыдущих версий платформы .NET Platform Standard (1.2, 1.1, 1.0).
  • Самая ранняя платформа .NET Framework для поддержки .NET Platform Стандартная версия - .NET Framework 4.5. Это связано с тем, что новая портативная поверхность API (например, основанная на System.Runtime), которая используется в качестве основы для платформы .NET Platform Standard, стала доступна только в этой версии .NET Framework. Ориентация .NET Framework < = 4.0 требует многотаргетинга.
  • Каждая стандартная версия платформы .NET Platform предоставляет больше поверхности API, что означает, что она доступна на меньших платформах. По мере обновления платформ их новые версии вступают в новые версии платформы .NET Platform Standard.
  • Платформы, которые перестали обновляться, как Silverlight на Windows Phone, будут доступны только в ранних версиях .NET Platform Standard.

Примечание

Пожалуйста, обратите внимание, что кличка описано есть для тока ночных сборок. Существуют незначительные отличия от текущей версии RC1, т. Е. dnx и dnxcore для приложений dnx (ASP.NET, Консоль, проекты модульных тестов) и net и dotnet для «Библиотека классов (пакет)».В RC2 токовых сборках и RC это будет net и netstandard (также см. this answer).

+0

Мне просто нужно было это подтверждение, поэтому мы не можем использовать существующий поставщик ADO.NET у нас есть, в результате чего нам придется сделать шаг назад к ASP.NET MVC 5, пока они не перенастроят .NET 4.5 Фреймворк. Или вы видите другое решение, чтобы иметь возможность использовать Entity Framework .. или использовать NHibernate, но это может быть даже хуже, чем уйти в отставку. – rfcdejong

+0

@rfcdejong: EntityFramework 6.x должен работать с 4.5.x, NHinerbate dunno. Мультитаргетинг полезен только для библиотек/пакетов. – Tseng

+0

Pervasive не писал провайдера EF6, который всегда был годами. Как и их последний провайдер в прошлом месяце в этом году, ссылка на .NET Framework v2.0 кажется. – rfcdejong

Смежные вопросы