Пример #1
0
        public void TestBulkWriteRoles()
        {
            var collection = GetTestCollection <BsonDocument>();

            Dictionary <long, Role> Roles = new Dictionary <long, Role>();

            for (int i = 0; i < 100; i++)
            {
                var role = new Role {
                    RoleID = i, RoleName = i.ToString(), Inserted = true
                };
                for (int itemIndex = 0; itemIndex < 50; itemIndex++)
                {
                    role.Items.Add(itemIndex, new Item {
                        ItemID = itemIndex, ItemUID = itemIndex
                    });
                }
                Roles.Add(i, role);
            }

            UpdateContext    update  = new UpdateContext();
            BulkWriteContext context = new BulkWriteContext();

            foreach (var pair in Roles)
            {
                if (pair.Value.Inserted)
                {
                    context.Insert((BsonDocument)pair.Value);
                }
                else
                {
                    update.Clear();
                    pair.Value.Update(update);
                    context.Update(new BsonDocument {
                        { "_id", pair.Key }
                    }, update.Build());
                }
                pair.Value.ClearDirty();
                pair.Value.Inserted = false;
            }
            context.Execute(collection);
            update.Clear();
            context.Clear();

            for (int i = 0; i < 100; i++)
            {
                Roles[i].RoleName += i;
                Roles[i].Items.Add(51, new Item {
                    ItemID = 51, ItemUID = 51
                });
            }
            Roles.Add(100, new Role {
                RoleID = 100, Inserted = true
            });

            foreach (var pair in Roles)
            {
                if (pair.Value.Inserted)
                {
                    context.Insert((BsonDocument)pair.Value);
                }
                else
                {
                    update.Clear();
                    pair.Value.Update(update);
                    context.Update(new BsonDocument {
                        { "_id", pair.Key }
                    }, update.Build());
                }
                pair.Value.ClearDirty();
                pair.Value.Inserted = false;
            }
            context.Execute(collection);
            update.Clear();
            context.Clear();
        }
Пример #2
0
        public void TestUpdateVsReplace()
        {
            var collection           = GetTestCollection <BsonDocument>();
            BulkWriteContext context = new BulkWriteContext();

            Dictionary <long, Role> Roles = new Dictionary <long, Role>();

            for (int i = 0; i < 100; i++)
            {
                var role = new Role {
                    RoleID = i, RoleName = i.ToString()
                };
                for (int itemIndex = 0; itemIndex < 50; itemIndex++)
                {
                    role.Items.Add(itemIndex, new Item {
                        ItemID = itemIndex, ItemUID = itemIndex
                    });
                }
                role.ClearDirty();
                Roles.Add(i, role);
                context.Insert((BsonDocument)role);
            }
            context.Execute(collection);
            context.Clear();

            Stopwatch watch = new Stopwatch();

            List <ReplaceOneModel <BsonDocument> > replaces = new List <ReplaceOneModel <BsonDocument> >();

            watch.Start();
            foreach (var pair in Roles)
            {
                replaces.Add(new ReplaceOneModel <BsonDocument>(new BsonDocument {
                    { "_id", pair.Key }
                }, (BsonDocument)pair.Value));
            }
            collection.BulkWrite(replaces);
            watch.Stop();
            var time1 = watch.ElapsedMilliseconds;

            watch.Reset();

            for (int i = 0; i < 100; i++)
            {
                Roles[i].RoleName += i;
                for (int itemIndex = 0; itemIndex < 10; itemIndex++)
                {
                    Roles[i].Items[itemIndex].ItemID += 1;
                }
                Roles[i].Items.Add(51, new Item {
                    ItemID = 51, ItemUID = 51
                });
            }

            UpdateContext update = new UpdateContext();

            watch.Start();
            foreach (var pair in Roles)
            {
                update.Clear();
                pair.Value.Update(update);
                context.Update(new BsonDocument {
                    { "_id", pair.Key }
                }, update.Build());
            }
            context.Execute(collection);
            context.Clear();
            watch.Stop();
            var time2 = watch.ElapsedMilliseconds;

            Assert.IsTrue(time1 > time2);
        }
Пример #3
0
 public void Setup()
 {
     context.Clear();
 }