簡體   English   中英

在sqlite-net擴展中使用Textblobbed

[英]Using Textblobbed in sqlite-net-extensions

我正在嘗試在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);

作為所有清單的togheter:

connection.InsertAllWithChildren(listOfContacts, true);

並且我確定在保存列表之前,該列表已正確填充。 但是當我從sqlite讀取其值時:

var list = connection.Table<Contact>().ToList();
connection.UpdateAll(list ,true);

我的PhoneNumbers和MailAddresses字段中沒有值,而在其blobled字段中填充了序列化的值。

沉迷於嘗試手動反序列化blobed字段,我從Json.net獲得了一個異常(即,以這種方式執行):

 foreach (Contact pc in list)
        {
            try
            {
                Contact.PhoneNumber[] numbs = JsonConvert.DeserializeObject<PhoneContact.PhoneNumber[]>(pc.PhoneNumbersBlobbed);
            }
            catch {
                ;
            }
        }

我怎么了 謝謝

為了從數據庫檢索關系,您必須使用SQLite-Net Extensions提供的任何WithChildren方法。

嘗試更改這些行:

var list = connection.Table<Contact>().ToList();
connection.UpdateAll(list ,true);

對此:

var list = connection.GetAllWithChildren<Contact>();

您也不需要PhoneNumber表,因為它們正在text屬性中進行序列化。 因此,您可以刪除以下行:

connection.CreateTable<Contact.PhoneNumber>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM