Я работаю над мобильным приложением 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-подобные инструменты для создания / вставки таблиц и данных в файл веб-сервера?Есть ли другое лучшее решение для оптимизации времени?
Спасибо за ваше время