如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?

Posted

技术标签:

【中文标题】如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?【英文标题】:How to connect sql Database with ado.net in Asp.Net Core Mvc 5.0? 【发布时间】:2021-07-27 16:40:20 【问题描述】:

我找不到我在哪里失踪。 我的代码是这样的;

users.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace Adonet_Sql.Models

public class users


    private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
     public List<usersAccessLayer> getdata()
    
        List<usersAccessLayer> li = new List<usersAccessLayer>();
        try
        
            SqlConnection conn = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand("test", conn);
            conn.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            
                usersAccessLayer usr = new usersAccessLayer();
                usr.id = (string)rdr.GetValue(2);
                usr.name = rdr.GetString(0);
                usr.surname = rdr.GetString(1);
                li.Add(usr);
            
     
        
        catch (Exception)
        

            throw;
        

        return li;
    

usersAccessLayer.cs ;

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Threading.Tasks;

      namespace Adonet_Sql.Models
      
          public class usersAccessLayer
          
    public string name  get; set; 
    public string surname  get; set; 
    public string id  get; set; 

      

appsettings.json

    
  "ConnectionStrings": 
"DefaultConnection": "Server=DESKTOP-1FOQ86Q; 
 Database=Users;Trusted_Connection=True;MultipleActiveResultSets=true\""
 ,
 "Logging": 
  "LogLevel": 
   "Default": "Information",
   "Microsoft": "Warning",
   "Microsoft.Hosting.Lifetime": "Information"

   ,
 "AllowedHosts": "*"



最后我得到了这个错误;

处理请求时发生未处理的异常。 NullReferenceException:对象引用未设置为对象的实例。 users.cs 第 14 行中的 Adonet_Sql.Models.users..ctor() users.cs 中的 Adonet_Sql.Models.users..ctor()

private string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
Adonet_Sql.Controllers.HomeController.Index() in HomeController.cs
sers obj = new users();
lambda_method1(Closure , object , object[] )
Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)

废话。

【问题讨论】:

您不想使用 Dapper、EFCore 或其他一些 ORM 的任何特定原因? 我是一名实习生,他们希望我使用 ado.net :) 在C#中,我们用首字母大写来命名我们的类和方法,顺便说一下..LikeThis,notLikeThis 我会尽快开始阅读干净代码 docs.microsoft.com/en-us/dotnet/csharp/programming-guide/… 【参考方案1】:

您可能忘记在配置中添加连接字符串。 ConfigurationManager.ConnectionStrings["DefaultConnection"] 返回null。它正在 App.config 中查找连接字符串。 Docs.

尝试阅读this thread并将IConfigurationappsettings.json结合使用。

【讨论】:

【参考方案2】:

ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

适用于 .net Core 3.0

在5.0中你需要使用;

string connectionString = _configuration.GetConnectionString("DefaultConnection");

private string connectionString = "Server=DESKTOP-1FOQ86Q ;Database=Users;Trusted_Connection=True;MultipleActiveResultSets=true"

【讨论】:

以上是关于如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定在 C# ASP.NET CORE MVC 5.0 中选择了哪个单选按钮

通过 ASP.NET Core 3.1/5.0 MVC 中的脚本使用选定的 ''value='' 填充数据库

使用 FFMPEG 的 ASP.NET Core 5.0 MVC HLS 转码

从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常

如何按照存储库模式在 Asp.Net Core 5.0 项目上实现 .Net Core Identity?

.NET Core简介