zoukankan      html  css  js  c++  java
  • Autofac注入多数据库(DbContext)

    初始化DbContext

    public partial class x1_Context : DbContext
    {
        public hw_siteContext()
        {
        }
    
        public hw_siteContext(DbContextOptions<hw_siteContext> options)
            : base(options)
        {
        }
        ...
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            ...
        }
        
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseMySql("...");
            }
        }
    
        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
    View Code
    public partial class x2_Context : DbContext
    {
        public hw_siteContext()
        {
        }
    
        public hw_siteContext(DbContextOptions<hw_siteContext> options)
            : base(options)
        {
        }
        ...
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            ...
        }
        
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseMySql("...");
            }
        }
    
        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
    View Code

    注入时:

    builder.RegisterType<x1_Context>().AsImplementedInterfaces().Named<DbContext>("X1Context");  //指定DbContext别名,方便注入
    builder.RegisterType<x2_Context>().AsImplementedInterfaces().Named<DbContext>("X2Context"); //指定DbContext别名,方便注入
    
    builder.Register<Func<string, DbContext>>(c=>
    {
        var cc = c.Resolve<IComponentContext>();
        return named => cc.ResolveNamed<DbContext>(named);
    });
    View Code

     使用时:构造函数注入

    public XXService(Func<string, DbContext> DbContexts)
    {
      _x1Context = DbContexts("X1Context") as x1_Context;
      _x2Context = DbContexts("X2Context") as x2_Context;
    }
    View Code

     方法二:

    不注入 Func<string, DbContext>

    直接构造函数使用 Autofac.Features.Indexed.IIndex<string, DbContext> DbContexts 读取

  • 相关阅读:
    exp迁移测试库10.2.0.5
    DG_Check检测
    DG Switch over
    CPU查询
    记录数据库中,段大小的数据增长情况
    C++ 多态
    java反射
    git的基本概念
    实现MySQL的Replication
    网页只允许中国用户访问
  • 原文地址:https://www.cnblogs.com/kuangxiangnice/p/14179488.html
Copyright © 2011-2022 走看看