示例#1
0
        /// <summary>
        /// Processing all the published items.
        /// </summary>
        /// <param name="args"><see cref="PublishEndResultBatchArgs"/></param>
        public void ProcessChangedItems(PublishEndResultBatchArgs args)
        {
            var changedItems   = new List <ChangedItem>();
            var sourceDatabase = _databaseFactory.GetDatabase(args.JobData.SourceDatabaseName);

            // Process deleted items first
            var itemResults            = args.Batch.ToList();
            var deletedResults         = itemResults.Where(x => x.Type == ManifestOperationResultType.Deleted);
            var createdModifiedResults = itemResults.Where(x => x.Type != ManifestOperationResultType.Deleted);
            var deletedResultsList     = deletedResults.ToList();

            if (deletedResultsList.Any())
            {
                changedItems.AddRange(deletedResultsList.Select(deletedResult => ProcessDeletedItem(sourceDatabase, deletedResult)));
            }

            var createdModifiedResultsList = createdModifiedResults.ToList();

            if (createdModifiedResultsList.Any())
            {
                changedItems.AddRange(createdModifiedResultsList.Select(itemResult => ProcessChangedItem(sourceDatabase, itemResult)).Where(changedItem => changedItem != null));
            }

            if (changedItems.Count > 0)
            {
                // Insert specific things that you would like to do
                // Examples: pass the changedItems to another custom pipeline, raise more events, or custom remote events with the changedItems as part of EventData
            }
        }
示例#2
0
        public void ThrowExceptionWhenPassingInvalidNameToDatabaseFactory()
        {
            var services = new ServiceCollection();

            services.AddKorm("server=localhost-1", "db1");
            services.AddKorm("server=localhost-2", "db2");
            ServiceProvider  provider = services.BuildServiceProvider();
            IDatabaseFactory factory  = provider.GetService <IDatabaseFactory>();

            Action action = () => factory.GetDatabase("NonExistingName");

            action.Should().Throw <ArgumentException>().And.ParamName.Should().Be("name");
        }
示例#3
0
        public void ReturnTheSameDatabaseFromFactoryInTheSameScope()
        {
            var services = new ServiceCollection();

            services.AddKorm("server=localhost-1", "db1");
            services.AddKorm("server=localhost-2");
            services.AddKorm("server=localhost-3", "db3");

            ServiceProvider  provider = services.BuildServiceProvider();
            IDatabaseFactory factory1 = provider.GetService <IDatabaseFactory>();
            IDatabase        db1      = factory1.GetDatabase("db1");
            IDatabase        db2      = factory1.GetDatabase("db1");
            IDatabase        db3      = null;

            using (IServiceScope scope = provider.CreateScope())
            {
                IDatabaseFactory factory2 = scope.ServiceProvider.GetService <IDatabaseFactory>();
                db3 = factory2.GetDatabase("db1");
            }

            db2.Should().Be(db1, "\"db2\" was created using the same factory as \"db1\".");
            db3.Should().NotBeNull().And.NotBe(db1, "\"db3\" was created using factory in different scope as \"db1\".");
        }
示例#4
0
 public void Log(LogEntity entity)
 {
     //DB call
     using (var database = _databaseFactory.GetDatabase())
     {
         var        activityId = database.CreateParameter("@activityId", SqlDbType.VarChar, 60, entity.ActivityId);
         IDbCommand command    = database.CreateCommand();
         command.Parameters.Add(activityId);
         command.CommandType = CommandType.StoredProcedure;
         database.Open(_appSettings.ConfigDataBaseConnection);
         command.Connection = database.GetConnection();
         var affectedRows = command.ExecuteNonQuery();
     }
 }
示例#5
0
        private IMongoCollection <RestaurantDto> GetCollection()
        {
            var database   = _databaseFactory.GetDatabase();
            var collection = database.GetCollection <RestaurantDto>(Collection);

            try
            {
                return(collection);
            }
            catch (Exception e)
            {
                _logger.Error("Exception in RestaurantDao GetCollection: " + e.Message);
                throw;
            }
        }
示例#6
0
        public void ReturnDatabaseWithDefaultName()
        {
            var services = new ServiceCollection();
            DatabaseConfigurationBase config1 = Substitute.For <DatabaseConfigurationBase>();
            DatabaseConfigurationBase config2 = Substitute.For <DatabaseConfigurationBase>();

            services.AddKorm("server=localhost-1", "db1").UseDatabaseConfiguration(config1);
            services.AddKorm("server=localhost-2").UseDatabaseConfiguration(config2);

            ServiceProvider  provider = services.BuildServiceProvider();
            IDatabaseFactory factory  = provider.GetService <IDatabaseFactory>();

            _ = factory.GetDatabase();
            config2.Received().OnModelCreating(Arg.Any <ModelConfigurationBuilder>());
            config1.DidNotReceive().OnModelCreating(Arg.Any <ModelConfigurationBuilder>());
        }
示例#7
0
        public void ThrowExceptionWhenUsingDisposedDatabaseFactory()
        {
            var services = new ServiceCollection();

            services.AddKorm("server=localhost-1", "db1");
            ServiceProvider  provider = services.BuildServiceProvider();
            IDatabaseFactory factory  = null;

            using (IServiceScope scope = provider.CreateScope())
            {
                factory = scope.ServiceProvider.GetService <IDatabaseFactory>();
            }

            Action action = () => factory.GetDatabase("db1");

            action.Should().Throw <ObjectDisposedException>();
        }
 public ThemeRepository(IDatabaseFactory factory)
     : base(factory.GetDatabase())
 {
 }
 protected BaseRepository(IDatabaseFactory databaseFactory)
     : this(databaseFactory.GetDatabase())
 {
 }
示例#10
0
 protected override ObservatoryContext GetContext(IDatabaseFactory factory)
 {
     return(factory.GetDatabase());
 }
示例#11
0
 public UserRepository(IDatabaseFactory factory)
     : base(factory.GetDatabase())
 {
 }
示例#12
0
 /// <summary>
 /// Returns database registered with default connection string name
 /// (<see cref="KormBuilder.DefaultConnectionStringName"/>).
 /// </summary>
 /// <param name="factory">Database factory.</param>
 /// <returns>Database instance.</returns>
 public static IDatabase GetDatabase(this IDatabaseFactory factory)
 => factory.GetDatabase(KormBuilder.DefaultConnectionStringName);
示例#13
0
 public MyBusiness(IDatabaseFactory factory)
 {
     this.db = factory.GetDatabase();
 }