Как отправить весь контекст Entity Framework Core с сервера на клиент - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть серверное приложение ASP.NET Core, которое использует Entity Framework Core для предоставления данных своего SQL-сервера.

Есть клиенты, которые могут получать данные через вызовы API REST.

В начале связи необходимо иметь все данные о клиентах, но, используя существующие вызовы REST, требуется минут , поскольку контекст содержит тысячи объектов.

Итак, я посмотрелдля идей и попробовал следующее.

Самой привлекательной идеей была какая-то сериализация, поэтому я создал следующий метод:

public byte[] GetData()
{
   string data = Newtonsoft.Json.JsonConvert.SerializeObject(this.ChangeTracker, 
                 new Newtonsoft.Json.JsonSerializerSettings {
                 ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore });
   return CompressAsGZip(data);
}

Результаты:

  • Сериализация (и затем сжатие) ChangeTracker контекста
    • Первоначально ChangeTracker пуст, поэтому я не могу сделать это, пока не сделаю запрос всех данных
  • Сериализация (а затем сжатие) всего DbContext
    • В нем так много объектов, что после 20% я получил OutOfMemoryException

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

Каков был бы лучший способ отправить все данные клиенту так быстро, какэто может быть?

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