Я пытаюсь отобразить сложный класс в sqlite, но что-то кажется неправильным, потому что, когда я извлекаю свои объекты, сложные поля пусты. Вкратце, мой класс чем-то похож:
public class Contact
{
[PrimaryKey, AutoIncrement]
public int Id { set; get; }
public string Name { set; get; }
public string Status { set; get; }
[TextBlob("PhoneNumbersBlobbed")]
public List<PhoneNumber> PhoneNumbers { set; get; }
public string PhoneNumbersBlobbed { get; set; } // serialized PhoneNumbers
[TextBlob("MailAddressesBlobbed")]
public List<ContactEmail> MailAddresses { set; get; }
public string MailAddressesBlobbed { get; set; } // serialized MailAddresses
}
У меня, очевидно, есть отдельный класс для PhoneNumber:
public class PhoneNumber
{
public string Number { set; get; }
public bool IsVerified { set; get; }
public string AttrString { set; get; }
}
в то время как класс ContactEmail является собственным классом WinPhone.
Итак, после создания таблиц в БД:
connection.CreateTable<Contact.PhoneNumber>();
connection.CreateTable<Contact>();
и заполнив свой список контактов, я сохраняю их в БД. Я попытался сохранить один за другим с помощью:
connection.InsertWithChildren(contact,true);
как весь список вместе:
connection.InsertAllWithChildren(listOfContacts, true);
и я уверен, что список правильно заполнен, прежде чем сохранить его. Но когда я читаю его значения из sqlite:
var list = connection.Table<Contact>().ToList();
connection.UpdateAll(list ,true);
Я не вижу значений в своих полях PhoneNumbers и MailAddresses, хотя они заполнены сериализованными значениями в своих полях blobb.
В зависимости от того, пытаясь вручную десериализовать блоббированные поля, я получаю исключение из Json.net (т.е. делаю так):
foreach (Contact pc in list)
{
try
{
Contact.PhoneNumber[] numbs = JsonConvert.DeserializeObject<PhoneContact.PhoneNumber[]>(pc.PhoneNumbersBlobbed);
}
catch {
;
}
}
что я не так? Спасибо