コード例 #1
0
        private void CheckUniqueIndexConstraint(string record)
        {
            var columnValues = record.Split('#');
            var mongoDB      = new MongoDBAcess(DatabaseName);
            var indexFiles   = TableUtils.GetIndexFiles(DatabaseName, TableName);

            foreach (var file in indexFiles)
            {
                if (file.IsUnique)
                {
                    var createKeyOfUqIndex = "";
                    var pk = "";
                    for (int idx = 0; idx < ColumnsInfo.Count; idx++)
                    {
                        if (file.IndexColumns.Exists(elem => elem == ColumnsInfo[idx].ColumnName))
                        {
                            createKeyOfUqIndex += columnValues[idx] + '#';
                        }

                        if (ColumnsInfo[idx].PK)
                        {
                            pk = columnValues[idx] + "#";
                        }
                    }

                    createKeyOfUqIndex = createKeyOfUqIndex.Remove(createKeyOfUqIndex.Length - 1);
                    pk = pk.Remove(pk.Length - 1);

                    MongoDB.InsertKVIntoCollection(file.IndexFileName, createKeyOfUqIndex, pk);
                }
            }
        }
コード例 #2
0
        private void IndexRecordsUnique(MongoDBAcess mongoDB)
        {
            List <KeyValuePair <string, string> > indexedContent = new List <KeyValuePair <string, string> >();
            List <string> indexKeys = new List <string>();

            for (int idx = 0; idx < RecordsSplit.Count(); idx++)
            {
                var indexKey = "";
                foreach (var indexColumn in columns)
                {
                    var columnValue = RecordsSplit[idx][ColumnsPositions.Find(elem => elem.Key == indexColumn).Value];
                    indexKey += columnValue + '#';
                }
                indexKey = indexKey.Remove(indexKey.Length - 1);

                var recordPK = "";
                foreach (var column in ColumnsInfo)
                {
                    if (column.PK)
                    {
                        recordPK += RecordsSplit[idx][ColumnsPositions.Find(elem => elem.Key == column.ColumnName).Value] + '#';
                    }
                }
                recordPK = recordPK.Remove(recordPK.Length - 1);


                if (indexKeys.Exists(elem => elem == indexKey))
                {
                    throw new Exception("Could not create unique Index for table: " + TableName + " due to duplicate values in columns: " + columnsString);
                }
                else
                {
                    indexKeys.Add(indexKey);
                    indexedContent.Add(new KeyValuePair <string, string>(indexKey, recordPK));
                }
            }

            try
            {
                foreach (var indexKeyValue in indexedContent)
                {
                    mongoDB.InsertKVIntoCollection(indexName, indexKeyValue.Key, indexKeyValue.Value);
                }
            }
            catch (Exception)
            {
                throw new Exception("Could not index content for table: " + TableName);
            }
        }