для проекта стажировки Я разрабатываю приложение с Xamarin, которое позволит пользователям сканировать штрих-коды и создавать листы этикеток и покупок.
Чтобы предотвратить потерю отсканированных кодов в случае сбоя и т. Д., Я реализовал SQLite для создания локальной резервной копии, которую мы могли бы восстановить.
Структура выглядит следующим образом: ListOfLabelLines
содержит несколько LabelLine
, каждый из которых содержит Product
и различную другую информацию (такую как упаковка, количество и т. Д.).
ListOfLabelLines.cs:
[Table("ListOfLabelLines")] // Indique le nom de la table qui sera générée par SQLite
public class ListOfLabelLines : BaseItem
{
private string _name { get; set; }
[TextBlob("LabelLinesBlob")]
public ObservableCollection<LabelLine> lines { get; set; }
[TextBlob("ListBlob")]
public List<String> TestList { get; set; }
public string LabelLinesBlob { get; set; } // serialized LabelLines
public string ListBlob { get; set; } // serialized TestList
public ListOfLabelLines()
{
}
public ListOfLabelLines(string name)
{
this._name = name;
lines = new ObservableCollection<LabelLine>();
TestList = new List<String>();
TestList.Add("Test1");
TestList.Add("Test2");
}
public string Name
{
get { return _name; }
set
{
_name = value;
}
}
}
}
Эти объекты ListOfLabelLines
содержат ObservableCollection<LabelLine>
, который я сериализую, используя свойство TextBlob из SQLite-net-extensions.
Однако, когда я извлекаю ListOfLabelLines
, который я сохранил, ObservableCollection отображается как ноль:
Пример нулевых коллекций
Вот методы, которые я использую для хранения объектов в SQlite:
public void SaveListOfLabelLines(ListOfLabelLines ShelfLabelInstance)
{
var query = from label in database.Table<ListOfLabelLines>()
where label.Name == ShelfLabelInstance.Name
select label;
var res = query.FirstOrDefault();
if (res != null)
{
database.UpdateWithChildren(ShelfLabelInstance);
Console.WriteLine("Label " + ShelfLabelInstance.Name + " updated");
}
else
{
database.InsertWithChildren(ShelfLabelInstance);
Console.WriteLine("Label " + ShelfLabelInstance.Name + " created");
}
}
и для их извлечения:
public void CheckProductsInLabelLine(string n)
{
var query = from LOLL in database.Table<ListOfLabelLines>()
where LOLL.Name == n
select LOLL;
ListOfLabelLines res = query.FirstOrDefault();
Строковое свойство, связанное с TextBlob, однако, содержит нужный мне JSON-объект.
Я думал, что ObservableCollection будет доступен при получении объекта в БД, поскольку TextBlob должен сериализовать И десериализовать.
Может ли кто-нибудь помочь?
Большое спасибо!