在.Net Core中实现IDbConnection

问题描述 投票:0回答:2

我有一个 .Net core Web 应用程序和 .net core 库。使用 Dapper 时,我需要传入一个继承自

IDbConnection
的具体类。问题是,在 .Net Core 中,
System.Data
不是一个可行的参考,看起来他们正在废除它。

是否有 .Net 替代品或 nuget 包我可以在某些地方使用。我需要连接到 Microsoft Sql Server 2016

编辑

我尝试制作一个 .Net 标准库,看看我是否可以这样使用

System.Data
。而且我也无法将
System.Data
添加到新项目中。

编辑2

我发现了一个nuget包System.Data.Common。这似乎可以工作,它有接口

IDbConnection
但是我看不到连接到 SQL 的方法。我必须自己实现
IDbConnection
。于是我又迷茫了。

c# interface asp.net-core .net-core dapper
2个回答
18
投票

添加 System.Data.SqlClient nuget 包作为依赖项。它有

//
// Summary:
//     Represents an open connection to a SQL Server database. This class cannot be
//     inherited.
public sealed class SqlConnection : DbConnection

这样你就能做到

using System.Data.SqlClient;    // As of 2019 using Microsoft.Data.SqlClient;
...

using (IDbConnection dbConnection = new SqlConnection(connectionString))
{
    dbConnection.Open();
    // dbConnection.Execute(query, data);
}

0
投票

//创建DBconnection类 公共类 DBConnectionHelper { 私有只读字符串_connectionString;

 public DBConnectionHelper(string connectionString)
 {
     _connectionString = connectionString;
 }

 public IDbConnection ConnectToDatabase()
 {
     SqlConnection conn = new SqlConnection(_connectionString);
     try
     {
        // conn.AccessToken = new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider().GetAccessTokenAsync("https://database.windows.net/").Result;
         conn.Open();
     }
     catch (Exception)
     {
     }
     finally
     {
     }
     return conn;
 }

}

// 在启动课程中

        services.AddTransient(db => new DBConnectionHelper(AppSettings.ApplicationDBConnString).ConnectToDatabase());

// 在 apsetting.json 中

“连接字符串”:{ "ApplicationDBConnectionString": "服务器=....;数据库=....;用户 ID=....;密码=...;",

© www.soinside.com 2019 - 2024. All rights reserved.