public void GetFieldsOrderedByIndex_WhenPlainAndUniquesExistsInSchema_FieldsAreReturnedInCorrectOrder() { var structureSchema = CreateStructureSchemaFakeWithPlainAndUniques(); var uniqueStorageSchema = new UniqueStorageSchema(structureSchema, "foo"); var fieldsByIndex = uniqueStorageSchema.GetFieldsOrderedByIndex().ToList(); Assert.AreEqual(5, fieldsByIndex.Count); Assert.AreEqual(0, fieldsByIndex[0].Ordinal); Assert.AreEqual(UniqueStorageSchema.Fields.RowId.Name, fieldsByIndex[0].Name); Assert.AreEqual(1, fieldsByIndex[1].Ordinal); Assert.AreEqual(UniqueStorageSchema.Fields.StructureId.Name, fieldsByIndex[1].Name); Assert.AreEqual(2, fieldsByIndex[2].Ordinal); Assert.AreEqual(UniqueStorageSchema.Fields.UqStructureId.Name, fieldsByIndex[2].Name); Assert.AreEqual(3, fieldsByIndex[3].Ordinal); Assert.AreEqual(UniqueStorageSchema.Fields.UqMemberPath.Name, fieldsByIndex[3].Name); Assert.AreEqual(4, fieldsByIndex[4].Ordinal); Assert.AreEqual(UniqueStorageSchema.Fields.UqValue.Name, fieldsByIndex[4].Name); }
protected virtual void BulkInsertUniques(IStructureSchema structureSchema, IStructureIndex[] uniques) { if (!uniques.Any()) return; var uniquesStorageSchema = new UniqueStorageSchema(structureSchema, structureSchema.GetUniquesTableName()); using (var uniquesReader = new UniquesReader(uniquesStorageSchema, uniques)) { using (var bulkInserter = MainDbClient.GetBulkCopy()) { bulkInserter.DestinationTableName = uniquesReader.StorageSchema.Name; bulkInserter.BatchSize = uniques.Length; var fields = uniquesReader.StorageSchema.GetFieldsOrderedByIndex().Where(f => !f.Equals(StructureStorageSchema.Fields.RowId)).ToArray(); foreach (var field in fields) bulkInserter.AddColumnMapping(field.Name, field.Name); bulkInserter.Write(uniquesReader); } } }