Ejemplo n.º 1
0
        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);
                }
            }
        }
        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);
        }
Ejemplo n.º 3
0
 public UniquesReader(UniqueStorageSchema storageSchema, IEnumerable <IStructureIndex> items)
     : base(storageSchema, items)
 {
 }