Попытка синхронизации данных из стороннего API - PullRequest
0 голосов
/ 11 декабря 2018

Этот вопрос, вероятно, был задан правильно раньше, и я с удовольствием приму ответ, указывающий мне на правильное место.Проблема в том, что я не знаю, как правильно задать вопрос, чтобы получить что-либо, возвращаемое при поиске.

Я пытаюсь получить данные из стороннего API (ADP) и сохранить данные в своей базе данных, используяЯдро asp.net.

Я хочу взять пользователей, возвращенных из API, и сохранить их в моей базе данных, где у меня есть вспомогательная таблица ADP, заполненная большинством данных из API.

Затем я хотел бы обновить или добавить в мою базу данных отсутствующие или измененные записи ОТ API.

Я думаю об использовании ajax-вызова API для извлечения записей, а затем либо сохранения данных в другой таблице и использования sql для поиска записей, которые изменяются между двумя таблицами, и выполнения любых необходимых действий.изменения (это будет активировано вручную с помощью кнопки), или какая-то запланированная фоновая задача для выполнения этого с помощью методов в моем коде c # вместо ajax.

У меня такой вопрос:

  1. Лучше ли это делать как хранимую процедуру в sql, или, скорее, иметь метод в моем веб-приложении, выполняющий преобразование данных.
  2. Я ищу любые примеры перебора возвращаемых данных и обновления / создания записей в моей базе данных.
  3. Я видел только расплывчатое, не совсем то, что я ищу в примерах, и ничего определенного в том, как лучше всего это сделать.Если я смогу найти какой-либо справочный материал или примеры, я с удовольствием проведу исследование, но я даже не знаю, с чего начать, или правильные термины для поиска.Я рассмотрел связывание моделей, вызовы ajax, сериализацию и десериализацию json.Я, наверное, обдумываю это.

Буду признателен за любые предложения или технологии, на которые я должен обратить внимание.Спасибо за ваше время заранее.

Мое приложение написано на Asp.net Core 2.2 с использованием EF Core

* РЕДАКТИРОВАТЬ *

Для тех, кто ищет- https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient

Этот ответ Джона Ву помог мне достичь того, что я искал.

1 Ответ

0 голосов
/ 12 декабря 2018

Если бы это был мой проект, я бы разбил задачи в следующем порядке.

Сначала запустите пустое консольное приложение.

Затем напишите метод, который получаетсписок пользователей из API.Вы ничего не рассказали нам об API, поэтому вот фиктивный пример, который использует HTTP-клиент.

public async Task<List<User>> GetUsers()
{
    var client = new HttpClient();
    var response = await client.GetAsync("https://SomeApi.com/Users");
    var users = await ParseResponse(response);
    return users.ToList();
}

Проверьте вышеупомянутое (например, напишите небольшой небольшой код для его запуска и выгрузитерезультаты, или что-то), чтобы убедиться, что он работает независимо.Прежде чем двигаться дальше, необходимо убедиться, что он твердый.

Затем создайте временную таблицу (или таблицы), которая соответствует схеме объектов данных, возвращаемых из API.А пока вы просто захотите сохранить его точно так, как вы его извлекаете.

Затем напишите некоторый код для вставки записей в таблицы.Опять же, проверьте это независимо и просмотрите данные в таблице, чтобы убедиться, что все работает правильно.Это может выглядеть примерно так:

public async Task InsertUser(User user)
{
    using (var conn = new SqlConnection(Configuration.ConnectionString))
    {
        var cmd = new SqlCommand();
        //etc.
        await cmd.ExecuteNonQueryAsync();
    }
}

Когда вы знаете, как извлечь данные и сохранить их, вы можете закончить код, чтобы извлечь данные из API и вставить их.Это может выглядеть примерно так:

public async Task DoTheMigration()
{
    var users = await GetUsers();
    var tasks = users.Select
    (
        u => InsertUser(u)
    );
    await Task.WhenAll(tasks.ToArray());
}

В качестве последнего шага напишите серию хранимых процедур или пакет DTS, чтобы переместить данные из временных таблиц в их окончательное место покоя.Если вы используете MS Access, вы можете написать серию запросов и выполнить их по порядку с некоторым VBA.На высоком уровне это будет:

  1. Проверить все записи, которые существуют в временной таблице, но отсутствуют в финальной таблице, и вставить их в финальную таблицу.

  2. Проверьте все записи, которые существуют в финальной таблице, но не являются временной таблицей, и удалите их или пометьте их как удаленные.

  3. Проверьте все общие записи, которые имеют разныезначения столбцов и обновите итоговую таблицу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...