Как подключиться к базе данных SQL Server с помощью библиотеки классов .NET Core (.NET Standard)?

Я только начал создавать проект веб-API ASP.NET Core. Я мало что знаю о «Стандартной библиотеке ASP.NET Core .NET».

Я создаю это приложение с помощью Visual Studio 2017 RC, и в приложении я взял проект типа Class Library (.NET Standard) на уровне репозитория.

Ниже приведен снимок экрана для того же:

введите описание изображения здесь

Теперь из уровня репозитория я хочу подключиться к базе данных. Я создал переменную

IDbConnection con;

Теперь я пытаюсь добавить ссылку на System.Data, но не могу добавить ссылку, потому что, когда я открываю окно добавления ссылки, я получаю следующее сообщение:

На компьютере не обнаружено сборок Framework.

Как я могу подключиться к базе данных с помощью библиотеки классов .NET Core (.NET Standard)?

введите описание изображения здесь


person Banketeshvar Narayan    schedule 24.12.2016    source источник
comment
Использовать Entity framework   -  person Master Programmer    schedule 24.12.2016
comment
Библиотека классов никак не связана с ASP.NET Core!   -  person Tseng    schedule 24.12.2016


Ответы (2)


Библиотеки .NET Standard Class не работают, напрямую ссылаясь на DLL, потому что с .NET Core нет гарантии, что фреймворк будет установлен в системе, а приложения .NET Core также могут работать как автономные приложения, которые поставляют библиотеки фреймворка. с приложением и не требуют предварительной установки среды выполнения.

Для добавления зависимостей необходимо использовать диспетчер пакетов NuGet (или project.json или * .csproj в VS2017). Для SQLServer вам необходимо добавить пакет System.Data.SqlClient (ссылка), если вы хотите напрямую взаимодействовать с базой данных (т.е. без ORM).

person Tseng    schedule 24.12.2016

Приведенный выше ответ (Tseng) мог быть действительным в 2016 году и в .NET Standard 1.4, но тем временем Microsoft удалила некоторые демонстрационные программы, разрешив доступ к SQL Server из библиотеки .NET Standard 2.1. Имейте в виду, что старый System.Data.SqlClient не будет связывать, поэтому вам (действительно!) Придется ссылаться на EF6 через NuGet и изменять некоторые using.

  • Создайте библиотеку стандартных классов .NET и установите версию 2.1

  • Установите Entity framework (он содержит библиотеки нижнего уровня)

  • При использовании обращайтесь к System.Data и к Microsoft.Data

Используются:

using System.Data
using Microsoft.Data.SqlClient

Теперь станут доступны унаследованные классы, такие как DataSet, SqlConnection и SqlClient.

Он не полностью совместим (пока). Некоторые вещи недоступны в стандарте .NET 2.1, например, перечисление доступных SQL-серверов в локальной сети. Это было сделано с SqlDataSourceEnumerator, который является классом в System.Data, который я не могу найти в Microsoft.Data.

ПРИМЕЧАНИЕ. Я успешно протестировал консольное приложение .Net Core 3.1. Стандартная библиотека, настроенная, как указано выше, может быть вызвана из .NET Core и без проблем подключиться к базе данных. Вы не можете использовать вызывающую программу .NET Framework.

person Goodies    schedule 14.11.2020