【问题标题】: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) 连接到数据库?

【问题讨论】:

  • 使用实体框架
  • 类库与 ASP.NET Core 没有任何关系!

标签: 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 并更改一些使用。

    • 创建一个 .NET 标准类库并将版本放在 2.1 上

    • 安装实体框架(这包含较低级别的库)

    • 使用时请参考System.DataMicrosoft.Data

    使用是:

    using System.Data
    using Microsoft.Data.SqlClient
    

    现在,DataSetSqlConnectionSqlClient 等“旧版”课程将可用。

    它不完全兼容(目前) .NET 标准 2.1 中没有一些东西,例如枚举 LAN 上可用的 SQL 服务器。这是通过SqlDataSourceEnumerator 完成的,这是System.Data 中的一个类,我在Microsoft.Data 中找不到。

    注意:我使用 .Net Core 3.1 控制台应用程序成功测试。可以从 .NET Core 调用如上配置的标准库并毫无问题地连接到数据库。您不能使用 .NET Framework 调用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多