.net Core 5.0。在控制器中实例化类时:没有给出与所需的形式参数"配置"对应的参数



在我的.net Core 5.0项目中,我正在处理一个webapi,在控制器中实例化DatabaseLayer类时出现以下错误。

严重性代码描述项目文件行禁止显示状态错误CS7036没有给定与"DatabaseLayer.DatabaseLayer(IConfiguration("所需的形式参数"configuration"相对应的参数

到目前为止,我看到的所有其他例子都是使用EFF和dbContext类,但在我的例子中,我使用的是ado.net

Here is my code so far:
My connection string is saved in appsettings.json:
*************************************************
"ConnectionStrings": {
"MyConnection": "data source=ServerName;Initial Catalog=dbName;Integrated Security=True"
 }
    ********************************************
This is what i have in my Startup.cs class:
var conn = Configuration.GetConnectionString("MyConnection");
        services.AddSingleton(conn);

********************************************
In my DBAccessLayer.cs i have this:

using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using Microsoft.Data.SqlClient;
using System.Data;
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Microsoft.Extensions.DependencyInjection;

namespace ProjectDL.Models
{
public class DatabaseLayer
{
    private IConfiguration _configuration;
    public DatabaseLayer(IConfiguration configuration)
    {
        _configuration = configuration;
    }
   public JsonResult GetUsersList()
    {code here}

********************************************
This is what i have in my controller class:
*********************************************
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Data.SqlClient;
using System.Data;
using ProjectDL.Models;
namespace ProjectAPI.Controllers
{
[ApiController]
public class UsersController : ControllerBase
{
    public UsersController(IConfiguration configuration)
    {
        this._configuration = configuration;
    }
    private IConfiguration _configuration;
    [HttpGet]
    [Route("api/[controller]")]
    public JsonResult Get()
    {
        var objDepartments = new DatabaseLayer();<---This is where i am getting the error
        return objUsers.GetUsersList();
    }
***************************************

在这件事上的任何帮助都将不胜感激。非常感谢。

DatabaseLayer类初始化的构造函数错误。在DatabaseLayer中,您有构造函数:

public DatabaseLayer(IConfiguration configuration)
{
    _configuration = configuration; //setting the IConfiguration
}                                   //for the class

但在控制器中,您正在初始化一个新对象,而没有将正确的参数传递到构造函数中。你必须做:

var objDepartments = new DatabaseLayer(_configuration);

或者,如果您不想将IConfiguration对象传递到DatabaseLayer类中,您可以在该类中创建第二个空构造函数:

public DatabaseLayer() { }

您可能希望避免,因为您可能需要IConfiguration参数。

最新更新