在我的.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
参数。