Skip to content

多数据库

多数据库管理是可以配置同时连接多个数据库,并由自己指定数据库连接字符串的模式。

注入多数据库

在Package中定义多数据库

C#
public class Package : PackageBase
    {
        ......
        private readonly IConfiguration _configuration;

        public Package(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        public override void OnConfigureServices(IServiceCollection services)
        {
            base.OnConfigureServices(services);
            ......
            // 配置多数据库
            services.AddMulDbEf(_configuration);
            MulEfDbContext.UseAssembly(this.GetType().Assembly);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="application"></param>
        /// <param name="serviceProvider"></param>
        public override void OnMounted(IApplication application, IServiceProvider serviceProvider)
        {
            base.OnMounted(application, serviceProvider);
            // 加入多数据库管理器
            var mulDbContextManager = IocManager.Instance.RootServices.GetRequiredService<IMulDbContextManager>();
            mulDbContextManager.AddProvider(new MulDbContextProvider());
            ......
        }
    }
C#
public class MulDbContextProvider : IMulDbContextProvider
    {
        public string GetConnectionString()
        {
          // 根据HttpContext情况,返回链接字符串
          return "server=......";
        }
    }

使用多数据库

C#
[ApiController]
[Route("api/[controller]")]
[AllowAnonymous]
public class UserController : ApiControllerBase
{
  private readonly IMulAppService<User, int> _userService;

  public MulAppServiceController(IMulAppService<User, int> userService)
  {
    _userService = userService;
  }

  [HttpGet("get")]
  public async Task Get()
  {
    var users = _userService.GetList(x => true);
  }
}

广州宝点数字化科技