【问题标题】:How to connect with SQL Server database using .NET Core Class Library (.NET Standard)?如何使用 .NET Core 类库(.NET Standard)连接 SQL Server 数据库?
【发布时间】:2017-05-10 00:03:36
【问题描述】:
我刚刚开始创建一个 ASP.NET Core Web API 项目。我不太了解“ASP.NET Core .NET 标准库”。
我正在使用 Visual Studio 2017 RC 创建此应用程序,在该应用程序中,我在存储库层采用了类库(.NET 标准)类型的项目。
以下是相同的屏幕截图:
现在我想从存储库层连接到数据库。我创建了一个变量
IDbConnection con;
现在我正在尝试添加 System.Data 的引用,但我无法添加任何引用,因为当我打开添加引用窗口时,我得到了以下消息:
在机器上没有找到任何框架程序集。
如何使用 .NET Core 类库(.NET Standard) 连接到数据库?
【问题讨论】:
标签:
visual-studio
asp.net-core
portable-class-library
visual-studio-2017
【解决方案1】:
.NET 标准类库不能通过直接引用 DLL 来工作,因为使用 .NET Core 无法保证框架会安装在系统上,并且 .NET Core 应用程序也可以作为自带的应用程序运行带有应用程序的框架库,并且不需要之前安装运行时。
您必须使用 NuGet 包管理器(或 VS2017 中的 project.json 或 *.csproj)来添加依赖项。对于 SQLServer,如果您想直接与数据库通信(即没有 ORM),则需要添加 System.Data.SqlClient 包 (link)。
【解决方案2】:
上述答案 (Tseng) 可能在 2016 年和 .NET Standard 1.4 中有效,但与此同时,微软确实删除了一些阻碍,允许从 .NET Standard 2.1 库访问 SQL Server。请注意旧的System.Data.SqlClient 不会链接,因此您(真的!)必须通过 NuGet 引用 EF6 并更改一些使用。
使用是:
using System.Data
using Microsoft.Data.SqlClient
现在,DataSet、SqlConnection 和 SqlClient 等“旧版”课程将可用。
它不完全兼容(目前) .NET 标准 2.1 中没有一些东西,例如枚举 LAN 上可用的 SQL 服务器。这是通过SqlDataSourceEnumerator 完成的,这是System.Data 中的一个类,我在Microsoft.Data 中找不到。
注意:我使用 .Net Core 3.1 控制台应用程序成功测试。可以从 .NET Core 调用如上配置的标准库并毫无问题地连接到数据库。您不能使用 .NET Framework 调用程序。