Example #1
0
        public void AddRelationshipsToExistingEntity()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetDatabase(database);

            var entity = dbSet.Create();

            entity.Description = "AddRelationshipsToExistingEntity";

            dbSet.SaveChanges();

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            dbEntity.StringModelEntities.Add(new StringIdModel
            {
                Description = "AddRelationshipsToExistingEntity-StringIdModel-1"
            });
            dbEntity.StringModelEntities.Add(new StringIdModel
            {
                Description = "AddRelationshipsToExistingEntity-StringIdModel-2"
            });

            dbSet.SaveChanges();

            Assert.AreEqual(2, dbEntity.StringModelEntities.Count);
            Assert.IsTrue(dbEntity.StringModelEntities.All(e => e.Id != null));
        }
Example #2
0
        public void ForceLoadEntities()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetDatabase(database);

            var entity = dbSet.Create();

            entity.Description = "ForceLoadEntities";

            entity.StringModelEntities.Add(new StringIdModel
            {
                Description = "ForceLoadEntities-StringIdModel-1"
            });
            entity.StringModelEntities.Add(new StringIdModel
            {
                Description = "ForceLoadEntities-StringIdModel-2"
            });

            dbSet.SaveChanges();

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            var navigationCollection = dbEntity.StringModelEntities as EntityNavigationCollection <StringIdModel>;

            Assert.AreEqual(2, navigationCollection.UnloadedCount);

            navigationCollection.LoadEntities();

            Assert.AreEqual(2, navigationCollection.LoadedCount);
            Assert.AreEqual(0, navigationCollection.UnloadedCount);
        }
Example #3
0
        public async Task AddRelationshipsToNewEntityAsync()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetDatabase(database);

            var entity = dbSet.Create();

            entity.Description = "AddRelationshipsToNewEntityAsync";

            entity.ObjectIdModelEntities.Add(new ObjectIdIdModel
            {
                Description = "AddRelationshipsToNewEntityAsync-ObjectIdIdModel-1"
            });
            entity.ObjectIdModelEntities.Add(new ObjectIdIdModel
            {
                Description = "AddRelationshipsToNewEntityAsync-ObjectIdIdModel-2"
            });

            await dbSet.SaveChangesAsync().ConfigureAwait(false);

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            Assert.AreEqual(2, dbEntity.ObjectIdModelEntities.Count);
            Assert.IsTrue(dbEntity.ObjectIdModelEntities.All(e => e.Id != ObjectId.Empty));
        }
Example #4
0
        public void RemoveRelationshipToEntity()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetDatabase(database);

            var entity = dbSet.Create();

            entity.Description = "RemoveRelationshipToEntity";

            var item = new StringIdModel
            {
                Description = "RemoveRelationshipToEntity-StringIdModel-1"
            };

            entity.StringModelEntities.Add(item);

            dbSet.SaveChanges();

            entity.StringModelEntities.Remove(item);

            dbSet.SaveChanges();

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            Assert.AreEqual(0, dbEntity.StringModelEntities.Count);

            var collectionDbSet = new MongoDbSet <StringIdModel>();

            collectionDbSet.SetDatabase(database);
            var itemDbEntity = collectionDbSet.Where(e => e.Id == item.Id).FirstOrDefault();

            Assert.IsNotNull(itemDbEntity);
        }
        public void ValidationExceptionOnInvalidModel()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetDatabase(database);

            dbSet.Add(new MongoDbSetValidationModel());
            dbSet.SaveChanges();
        }
        public void SuccessfulInsertAndQueryBack()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetDatabase(database);

            dbSet.Add(new MongoDbSetValidationModel
            {
                RequiredField = "ValueSync"
            });

            Assert.IsFalse(dbSet.Any(m => m.RequiredField == "ValueSync"));
            dbSet.SaveChanges();
            Assert.IsTrue(dbSet.Any(m => m.RequiredField == "ValueSync"));
        }
#pragma warning disable CRR0026 // Unused member - used via Reflection
        private void CommitRelationship <TRelatedEntity>(EntityRelationship relationship, IEnumerable <TEntity> entities)
        {
            var collection = BuildRelatedEntityCollection <TRelatedEntity>(relationship, entities);

            if (collection.Any())
            {
                var dbSet = new MongoDbSet <TRelatedEntity>();
                dbSet.SetDatabase(Database);
                dbSet.AddRange(collection);
                dbSet.SaveChanges();
            }

            if (!relationship.IsCollection)
            {
                ApplyForeignKeyChanges <TRelatedEntity>(relationship, entities);
            }
        }
        public async Task SuccessfulInsertAndQueryBackAsync()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <MongoDbSetValidationModel>();

            dbSet.SetDatabase(database);

            dbSet.Add(new MongoDbSetValidationModel
            {
                RequiredField = "ValueAsync"
            });

            Assert.IsFalse(dbSet.Any(m => m.RequiredField == "ValueAsync"));
            await dbSet.SaveChangesAsync().ConfigureAwait(false);

            Assert.IsTrue(dbSet.Any(m => m.RequiredField == "ValueAsync"));
        }
Example #9
0
        public void SaveWithNullNavigationProperty()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <CollectionIntegrationModel>();

            dbSet.SetDatabase(database);

            var entity = new CollectionIntegrationModel
            {
                Description = "SaveWithNullNavigationProperty"
            };

            dbSet.Add(entity);
            dbSet.SaveChanges();

            var dbEntity = dbSet.Where(e => e.Id == entity.Id).FirstOrDefault();

            Assert.AreEqual(0, dbEntity.StringModelEntities.Count);
        }
#pragma warning restore CRR0026 // Unused member - used via Reflection

#pragma warning disable CRR0026 // Unused member - used via Reflection
        private async Task CommitRelationshipAsync <TRelatedEntity>(EntityRelationship relationship, IEnumerable <TEntity> entities, CancellationToken cancellationToken)
        {
            var collection = BuildRelatedEntityCollection <TRelatedEntity>(relationship, entities);

            cancellationToken.ThrowIfCancellationRequested();

            if (collection.Any())
            {
                var dbSet = new MongoDbSet <TRelatedEntity>();
                dbSet.SetDatabase(Database);
                dbSet.AddRange(collection);
                await dbSet.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
            }

            if (!relationship.IsCollection)
            {
                ApplyForeignKeyChanges <TRelatedEntity>(relationship, entities);
            }
        }
        public void ReadAndWriteRootEntity()
        {
            var database = TestConfiguration.GetDatabase();
            var dbSet    = new MongoDbSet <RootKnownBaseModel>();

            dbSet.SetDatabase(database);

            var rootEntity = new RootKnownBaseModel
            {
                Description = "ReadAndWriteRootEntity-RootKnownBaseModel"
            };

            dbSet.Add(rootEntity);

            var childEntity = new UnknownChildToRootModel
            {
                Description = "ReadAndWriteRootEntity-UnknownChildToRootModel"
            };

            dbSet.Add(childEntity);

            dbSet.SaveChanges();

            ResetMongoDbDriver();
            dbSet = new MongoDbSet <RootKnownBaseModel>();
            dbSet.SetDatabase(database);

            var dbRootEntity = dbSet.Where(e => e.Id == rootEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbRootEntity);
            Assert.AreEqual(typeof(RootKnownBaseModel), dbRootEntity.GetType());

            var dbChildEntity = dbSet.Where(e => e.Id == childEntity.Id).FirstOrDefault();

            Assert.IsNotNull(dbChildEntity);
            Assert.AreEqual(typeof(UnknownChildToRootModel), dbChildEntity.GetType());
        }