【问题标题】: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;
    }
}

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2012-03-06
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多