我有以下使用IDatasourcerepository的类。
public class Project
{
public int Id { get; set; }
public string Name { get; set; }
public async Task<IEnumerable<Datasource>> Datasource([Inject] IDatasourceRepository repository)
{
return Mapper.Map<Datasource[]>(await repository.GetDatasources());
}
}
其定义如下。
public interface IDatasourceRepository
{
Task<IEnumerable<Datasource>> GetDatasources();
}
和接口实现的类如下所示。
public class DatasourceRepository : IDatasourceRepository
{
private readonly ProjectContext _context;
public DatasourceRepository(ProjectContext context)
{
_context = context;
}
public async Task<IEnumerable<Datasource>> GetDatasources()
{
return await _context.Datasource.AsNoTracking().ToListAsync();
}
}
我的startup.cs有以下内容可供注入。
var projectConnection = @"Project connection string";
services.AddDbContext<ProjectContext>(options => options.UseSqlServer(projectConnection));
services.AddScoped<IDatasourceRepository, DatasourceRepository>();
我正在按以下方式获取Graphql数据。
{
project {
id,
name,
datasource {
id,
name
}
}
}
现在,数据源表在各自的数据库中是独立的(每个项目一个数据库)。
所以我需要传递它们各自的数据库连接。假设,对于Project 1,我有类似“ Initial Catalog = Project_1”之类的连接字符串。
那么,如何动态传递他们的项目连接字符串(或可以通过其创建连接字符串的项目ID)。这样我就可以从该数据库中获取所有数据源。
答案 0 :(得分:0)
无需做太多编码。
只需为所有数据库的所需输出创建一个视图,然后将该视图映射到您的模型即可。
这是快速,流畅地报告的最佳方法。