/// <summary> /// Parse the attribute object and serializes the Certificates objects. /// </summary> /// <returns>Task</returns> /// <param name="obj">Object.</param> private async Task SaveCertificates(Attribute obj) { if (obj.Certificates == null || obj.Certificates.Count == 0) { await CreateTableAsync <AttributeCertificateMapping>(); return; } //for each certificate in the attribute foreach (KeyValuePair <string, Certificate> entry in obj.Certificates) { await _certMapper.SaveAsync(entry.Value); //Try to get the one to many mapping between an attributes and its //certificates, if it already exists AttributeCertificateMapping attrCert; if ((attrCert = await GetAttributeCertificateMappingAsync(obj.UID, entry.Value.UID)) == null) { //Create the one to many mapping between an attributes and its //certificates attrCert = new AttributeCertificateMapping() { AttrUID = obj.UID, CertUID = entry.Value.UID }; //save the mapping IMapper <AttributeCertificateMapping> attrCertMapper = new Mapper <AttributeCertificateMapping>(_dbFilePath); await attrCertMapper.SaveAsync(attrCert); } } }
private async Task <AttributeCertificateMapping> GetAttributeCertificateMappingAsync(int attrUID, int certUID) { SQLiteConnection conn = await ConnectToTableAsync <AttributeCertificateMapping>(); return(await Task.Run(() => { AttributeCertificateMapping acMapping = conn .Table <AttributeCertificateMapping>() .Where(mapping => mapping.AttrUID == attrUID && mapping.CertUID == certUID).FirstOrDefault(); conn.Close(); return acMapping; })); }