C# 具有动态连接字符串的DAL的依赖项注入

C# 具有动态连接字符串的DAL的依赖项注入,c#,.net,dependency-injection,C#,.net,Dependency Injection,我正在尝试构建一个AspNetCORE WebAPI,它具有各种端点,您可以发布这些端点以从数据库获取信息 我遇到的问题是试图在根层使用依赖注入来绑定我的DAL。端点上的每个请求都将携带初始目录的元数据。因此,必须根据请求构建连接字符串,然后将其打开 我已经构建了一个通用接口来处理我的repos,然后构建了一个实现该接口的类,但是在该实现中,它仍然需要更新一个数据源,而此时我没有连接到的DB 因此,这迫使我在每次请求时都建立一个新的连接 如果我将DAL抽象为一个管理器,然后使用DI绑定管理器,那

我正在尝试构建一个AspNetCORE WebAPI,它具有各种端点,您可以发布这些端点以从数据库获取信息

我遇到的问题是试图在根层使用依赖注入来绑定我的DAL。端点上的每个请求都将携带初始目录的元数据。因此,必须根据请求构建连接字符串,然后将其打开

我已经构建了一个通用接口来处理我的repos,然后构建了一个实现该接口的类,但是在该实现中,它仍然需要更新一个数据源,而此时我没有连接到的DB

因此,这迫使我在每次请求时都建立一个新的连接

如果我将DAL抽象为一个管理器,然后使用DI绑定管理器,那么我仍然缺少最初的目录细节

SQL数据库都有相同的模式,唯一的区别是数据库名

有没有一种方法可以在根上绑定我的DAL,同时仍然能够指定连接字符串


尝试在没有EF的情况下执行此操作,目前正在尝试找到一种使用Tortuga.Chain处理此问题的方法。

您看到了吗:。DI在控制器实例化时使用。看来你已经知道了。不过,ConfigureServices中的代码有点令人担忧。如果我没有读错,那么您是在将请求映射到目录,还是也在将请求映射到DAL的实现,还是都映射到同一个实现?因为您是基于请求数据建立(部分)连接字符串的,这意味着连接字符串是运行时数据。防止将运行时数据注入组件的构造函数。有关替代方案,请参见和。