如何依赖注入数据访问层在其构造函数中进行数据库设置?

时间:2018-05-03 20:26:52

标签: c# asp.net asp.net-core dependency-injection data-access-layer

我编写了一个带有通用CRUD操作的简单数据访问接口,因此每个数据库存储库都必须实现此接口。现在我为一个数据库说SQL实现了这个接口。此数据库的SQL实现将数据库设置(连接字符串和其他详细信息)作为其构造函数中的参数。

见下面的代码:

namespace MyDataAccessInterfaces
{
   public interface IDataAccess
   {
    read();
    create();
    update();
    delete();
   }
}

namespace MyDataAccessImplementations
{

   public class SQLAccess
   {
     SQLAccess(Settings settings){
     //do something to get DB context
      }

   //some properties here 

    read(){//some code
          }
    create(){//some code
          }
    update(){//some code
          }
    delete(){//some code
          }
   }
}

现在我想依赖注入服务控制器。我在这里看构造函数依赖注入。如果我将SQL实现作为依赖项传递给控制器​​构造函数,如下所示,并在启动类 - > ConfigureServie方法中添加它,如何传递它的设置?

public class HomeController : APIController
{
    private readonly IDataAccess _dataAccess;

    public HomeController(IDataAccess dataAccess)
    {
        _dataAccess= dataAccess;
    }

    public IActionResult Index()
    {
        //do something and set result
        return Ok(result);
    }
}

以下是我在startup.cs类中的ConfigureService方法

public void ConfigureServices(IServiceCollection services)
{
    // Add application services.
       services.AddSingleton<IDataAccess, SQLAccess>();
}

问题是,如何在API的配置服务方法中传递构造函数参数和属性值?

1 个答案:

答案 0 :(得分:0)

{
  method: 'GET',
  uri: `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${loc._id}`,
  headers: {

    Authorization: `OAuth ${ACCESS_TOKEN}`

  }
}