Отправка созданной базы данных SQLite в приложение xamarin - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю над мобильным приложением Xamarin, которое использует sqlite-net-pcl для хранения статических и динамических данных.

Прямо сейчас

Данные (статические идинамические) происходят из базы данных, к которой обращается веб-сервер ASP.net.

До сих пор я отправляю отдельный запрос для каждой партии данных.Данные передаются в виде файлов JSON, а после десериализации внутри приложения они сохраняются в базе данных SQLite.

Для этого я использую общую библиотеку объектов.Sqlite-net-pcl имеет удобные методы для преобразования объектов в таблицы и запроса их с помощью Linq-подобных функций без потери объектно-ориентированной области кода.

Классы общего кода выглядят следующим образом:

[Table("Drivers")]
public class Driver
{
     public int Id { get; set; }

     public string Name { get; set; }
}

[Table("Cars")]
public class Car
{
     public string PlateNum { get; set; }

     [Ignore]
     public Driver Driver { get; set; }

     public int _DriverId;

     public int DriverId 
     { 
         get
         {
             return Driver?.Id ?? _DriverId;
         }
         set
         {
             _DriverId = value;
         }
     }
}

Код базы данных Xamarin выглядит следующим образом:

public DataBase(string dbpath)
{
    database = new SQLiteConnection(dbpath);

    database.CreateTable<Driver>();
    database.CreateTable<Car>();
}

Контроллер веб-сервера выглядит следующим образом:

[HttpGet]
[Route("Cars/GetAll")]
public List<Car> GetCars()
{
     List<Car> Cars = new List<Car>();

     //db connection filling the List

     return Cars;
}

[HttpGet]
[Route("Drivers/GetAll")]
public List<Driver> GetDrivers()
{
     List<Driver> Drivers = new List<Driver>();

     //db connection filling the List

     return Drivers;
}

При этом я могу получать списки вПриложение Xamarin и храните их так просто:

foreach (Car car in Cars)
{
    database.InsertOrReplace(car);
}

foreach (Driver driver in Drivers)
{
    database.InsertOrReplace(driver);
}

Проблема

Как водитель и автомобиль Я использую около 15 других классов, которые в общей сложности они могут бытьболее 25 МБ в отдельных файлах JSON (, что , а не , реальная проблема ), или около миллиона уникальных строк таблицы (, что является реальной проблемой ).

For Time

Для оптимизации я решил пойти по сомнительному пути (который в данный момент явно не работает), собирая БД на веб-сервере и затем отправляяфайл к заявке,Это почти работает, за исключением того факта, что я не нашел способа объективизировать доступные библиотеки SQLite, которые работают на ASP.net.sqlite-net-pcl не работает вообще с Microsoft.Data.SQLite, System.Data.SQLite работает, и его файл совместим с версией приложения.

Вопрос

Есть ли какой-нибудь чистый способ использовать pcl-подобные инструменты для создания / вставки таблиц и данных в файл веб-сервера?Есть ли другое лучшее решение для оптимизации времени?

Спасибо за ваше время

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