public SimilaritiesReport FindForIncident(int incidentId)
        {
            using (var cmd = _uow.CreateCommand())
            {
                cmd.CommandText =
                    @"select Id, Name, Properties from IncidentContextCollections 
                            where IncidentId = @incidentId";
                cmd.AddParameter("incidentId", incidentId);

                var collections = new List <SimilarityCollection>();

                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var json       = (string)reader["Properties"];
                        var properties = CoderrDtoSerializer.Deserialize <ContextCollectionPropertyDbEntity[]>(json);
                        var col        = new SimilarityCollection(incidentId, reader.GetString(1));
                        col.GetType().GetProperty("Id").SetValue(col, reader.GetInt32(0));
                        foreach (var entity in properties)
                        {
                            var prop = new Similarity(entity.Name);
                            prop.LoadValues(
                                entity.Values.Select(x => new SimilarityValue(x.Value, x.Percentage, x.Count)).ToArray());
                            col.Properties.Add(prop);
                        }
                        collections.Add(col);
                    }
                }

                return(collections.Count == 0 ? null : new SimilaritiesReport(incidentId, collections));
            }
        }