Внедрение зависимостей GraphQL Dbcontext для данных клиента - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть следующий класс, который использует 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
        }
    }
}

Теперь таблица источника данных является отдельной в своих собственных базах данных (для каждого проектаодна база данных).

Так что мне нужно передать соответствующие подключения к базе данных.Допустим, для проекта 1 у меня есть строка подключения, например «Initial Catalog = Project_1» и т. Д.

Итак, как мне передать строку подключения проекта (или этот идентификатор проекта, с помощью которого я могу создать подключениестрока) динамически.чтобы я мог получить все источники данных из этой базы данных.

1 Ответ

0 голосов
/ 29 апреля 2019

Не нужно так много кодировать.

Просто создайте представление для желаемого вывода из всех баз данных, а затем сопоставьте это представление с вашей моделью.

Это лучший способ для быстрой и бесперебойной отчетности.

...