Appearance
多数据库
多数据库管理是可以配置同时连接多个数据库,并由自己指定数据库连接字符串的模式。
注入多数据库
在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);
}
}