Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net核心5.0。在控制器中实例化类时:没有给出与所需形式参数';配置';_C#_Ado.net_Connection String_Webapi - Fatal编程技术网

C# .net核心5.0。在控制器中实例化类时:没有给出与所需形式参数';配置';

C# .net核心5.0。在控制器中实例化类时:没有给出与所需形式参数';配置';,c#,ado.net,connection-string,webapi,C#,Ado.net,Connection String,Webapi,在我的.NETCore5.0项目中,我正在处理一个webapi,在控制器中实例化DatabaseLayer类时出现以下错误 严重性代码说明项目文件行抑制状态 错误CS7036未给出与“DatabaseLayer.DatabaseLayer(IConfiguration)”的必需形式参数“configuration”对应的参数 到目前为止,我看到的所有其他示例都使用EFF和dbContext类,但在我的例子中,我使用的是ado.net Here is my code so far: My conn

在我的.NETCore5.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();
    }

***************************************
以下是我目前的代码:
我的连接字符串保存在appsettings.json中:
*************************************************
“连接字符串”:{
“MyConnection”:“数据源=服务器名;初始目录=数据库名;集成安全性=True”
}
********************************************
这是我在Startup.cs课程中的内容:
var conn=Configuration.GetConnectionString(“MyConnection”);
服务业.康涅狄格州单身人士公寓;
********************************************
在我的DBAccessLayer.cs中,我有以下内容:
使用Microsoft.Extensions.Configuration;
使用Microsoft.AspNetCore.Mvc;
使用System.Collections.Generic;
使用Microsoft.Data.SqlClient;
使用系统数据;
使用制度;
使用Newtonsoft.Json;
使用Newtonsoft.Json.Serialization;
使用Microsoft.Extensions.DependencyInjection;
名称空间ProjectDL.Models
{
公共类数据库层
{
专用IConfiguration\u配置;
公共数据库层(IConfiguration配置)
{
_配置=配置;
}
公共JsonResult GetUsersList()
{code here}
********************************************
这是我的控制器类中的内容:
*********************************************
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Data.SqlClient;
使用系统数据;
使用ProjectDL.Models;
命名空间ProjectAPI.Controllers
{
[ApiController]
公共类UsersController:ControllerBase
{
公共用户控制器(IConfiguration配置)
{
这个。_配置=配置;
}
专用IConfiguration\u配置;
[HttpGet]
[路由(“api/[控制器]”)]
publicjsonresult Get()
{

var objDepartments=new DatabaseLayer();对于
DatabaseLayer
类初始化,您的构造函数是错误的。在
DatabaseLayer
中,您的构造函数是:

public DatabaseLayer(IConfiguration configuration)
{
    _configuration = configuration; //setting the IConfiguration
}                                   //for the class
但是在控制器中,您正在初始化一个新对象,而没有将正确的参数传递给构造函数。您必须执行以下操作:

var objDepartments = new DatabaseLayer(_configuration);
或者,如果不想将IConfiguration对象传递到
DatabaseLayer
类中,可以在该类中创建第二个空构造函数:

public DatabaseLayer() { }

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

新的数据库层(\u配置)
它工作了!非常感谢。