如何在 ASP.NET Core 中使用 SqlClient?
Posted
技术标签:
【中文标题】如何在 ASP.NET Core 中使用 SqlClient?【英文标题】:How to use SqlClient in ASP.NET Core? 【发布时间】:2016-02-16 22:45:25 【问题描述】:我正在尝试在 ASP.net Core 中使用 SQLClient 库,但似乎无法正常工作。我在网上找到了这篇文章,建议如何设置,但它对我不起作用:http://blog.developers.ba/using-classic-ado-net-in-asp-net-vnext/
我有一个简单的控制台应用程序包。我的 project.json 看起来像这样:
"version": "1.0.0-*",
"description": "DBTest Console Application",
"authors": [ "" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"compilationOptions":
"emitEntryPoint": true
,
"dependencies":
"System.Data.Common": "4.0.1-beta-23516",
"System.Data.SqlClient" : "4.0.0-beta-23516"
,
"commands":
"DBTest": "DBTest"
,
"frameworks":
"dnx451": ,
"dnxcore50":
"dependencies":
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Console": "4.0.0-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Threading": "4.0.11-beta-23516"
我尝试以下代码:
using System;
using System.Data.SqlClient;
namespace DBTest
public class Program
public static void Main(string[] args)
using (SqlConnection con = new SqlConnection(ConnStr))
con.Open();
try
using (SqlCommand command = new SqlCommand("SELECT * FROM SAMPLETABLE", con))
command.ExecuteNonQuery();
catch
Console.WriteLine("Something went wrong");
Console.Read();
但是得到以下错误:
还有其他人解决这个问题吗?
【问题讨论】:
我在您的任何依赖项中都没有看到对 System.Runtime 的引用。你试过添加一个吗? 你也没有在你的 sql 中执行UPDATE, INSERT or DELETE
命令,那么为什么你使用command.ExecuteNonQuery();
查找使用Fill()
方法从数据库中返回数据,或者如果只返回一个 ExecuteScalar 方法单行。您不仅需要添加对using section in the .cs file class header
的引用,还需要手动将它们添加到项目中的reference
节点
您的错误表明您没有为 DNX 4.5.1 添加正确的参考。您正在同时构建两种项目类型。如果您不关心 DNX.4.5.1,请从您的配置中删除它,它应该会构建。
伙计们——非常感谢你们!删除了 DNX 4.5.1 部分,并将 System.Runtime 的依赖项添加到设置中,它运行良好(在 Visual Studio 重新启动后一切正常!)。再次感谢!!!
【参考方案1】:
我想你可能错过了教程中的这一部分:
您需要的不是引用 System.Data 和 System.Data.SqlClient 从 Nuget 抓取:
System.Data.Common 和 System.Data.SqlClient。
目前这会在 project.json –> aspnetcore50 中创建依赖项 这两个库的部分。
"aspnetcore50": "dependencies": "System.Runtime": "4.0.20-beta-22523", "System.Data.Common": "4.0.0.0-beta-22605", "System.Data.SqlClient": "4.0.0.0-beta-22605"
尝试通过 Nuget 获取 System.Data.Common 和 System.Data.SqlClient,看看这是否会为您添加上述依赖项,但简而言之,您缺少 System.Runtime。
编辑:根据 Mozarts 的回答,如果您使用的是 .NET Core 3+,请参考 Microsoft.Data.SqlClient
。
【讨论】:
我只需要通过Nuget
添加System.Data.SqlClient
,它就可以在.NET Core 1.1
中与Dapper
一起使用。
我刚刚通过 Nuget 添加了 system.data.sqlclient 并且可以正常工作
这似乎已在 .NET Core 2.0
中修复。至少对我来说。
我使用界面而不是编辑配置文件:右键单击解决方案资源管理器中的依赖项,NuGet...。
我在使用 Nuget 或 dotnet add 包添加此包时遇到问题。一个解决方案是将依赖项直接放入项目文件并执行恢复 - dotnet restore。 Nuget.config 文件应在 packageSources 部分中包含 nuget.org。【参考方案2】:
对于 Dot Net Core 3,应使用 Microsoft.Data.SqlClient。
【讨论】:
这条评论对于从 .NET Core 2.2 迁移到 .NET Core 3.0 的任何人来说都是救命稻草。将 System.Data.SqlClient 中的所有引用替换为 Microsoft.Data.SqlClient。 @mozart,.Net Core 2.2 可以使用 Microsoft.Data.SqlClient 吗?还是 Microsoft.Data.SqlClient 仅用于 .net Core 3? @Daleman 我在迁移到 .Net Core 3 时解决了这个问题,所以我没有用 2.2 尝试过,我认为它不起作用“每个参数都有一个数据类型吗?”,但是你可以试试看。 @Mozar,您与数据库的连接仍在使用 stringbuilder 吗? @SteveSmith 你可以查看链接中的文章。【参考方案3】:试试这个 打开你的 projectname.csproj 文件 它对我有用。
<PackageReference Include="System.Data.SqlClient" Version="4.6.0" />
你需要在里面添加这个引用“ItemGroup”标签。
【讨论】:
以上是关于如何在 ASP.NET Core 中使用 SqlClient?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 EF Core 在 ASP.NET Core 中取消应用迁移
如何在 ASP.NET Core 中使用 SqlClient?