【问题标题】:Get Dbcontext dynamically ef动态获取 Dbcontext ef
【发布时间】:2021-02-13 15:33:07
【问题描述】:
我有一个为其他子项目提供 NuGet 包的 .Net Core 项目。
我想写一个在项目中获取活动 DBcontexts 的方法。
什么情况:
例如,我在主项目中创建方法A。
我生成
NuGet 包和所有子项目现在可以使用方法 A 但在
每个项目,我们都有不同的条件和情况,所以他们必须
是通用的。我处于想要访问 Dbcontexts 的情况
动态的。
所有项目都具有相同的结构,并且它们使用依赖注入,所以有什么方法可以访问 Ioc 或注入并获取 Dbcontexts 或有更好的方法吗?
【问题讨论】:
标签:
c#
asp.net
asp.net-core
.net-core
【解决方案1】:
我找到了解决方案
通过注入 IServiceCollection,您可以访问所有服务描述符集合。
public class CoreClass
{
protected IServiceCollection _serviceDescriptors;
public CoreClass(IServiceCollection serviceDescriptors)
{
_serviceDescriptors = serviceDescriptors;
}
private List<DbContext> GetContexts()
{
List<DbContext> listdb = new List<DbContext>();
foreach (ServiceDescriptor sd in _serviceDescriptors
.Where(s => s.ServiceType.IsSubclassOf(typeof(DbContext))))
{
listdb.Add((DbContext)HttpContext.RequestServices.GetService(sd.ServiceType));
}
return listdb;
}
}