【发布时间】:2015-12-11 11:12:58
【问题描述】:
我正在尝试在 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
}
我显然有一个单独的电话号码类:
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 字段中看不到值,而它们的 blobbed 字段中填充了序列化值。
上瘾,试图手动反序列化斑点字段,我从 Json.net 得到一个异常(即这样做):
foreach (Contact pc in list)
{
try
{
Contact.PhoneNumber[] numbs = JsonConvert.DeserializeObject<PhoneContact.PhoneNumber[]>(pc.PhoneNumbersBlobbed);
}
catch {
;
}
}
我怎么了? 谢谢
【问题讨论】:
标签: c# json sqlite sqlite-net-extensions