Пример #1
0
        public void OnApplicationStarted()
        {
            var initializers       = databaseInitializerDiscovery.DiscoverDatabaseInitializers();
            var sortedInitializers = initializers.ToList();

            sortedInitializers.Sort(comparer);

            foreach (var initializer in sortedInitializers)
            {
                Task.Factory.StartNewWithContext(async() =>
                {
                    using (IUnitOfWork uow = unitOfWorkFactoryFunc().CreateUnitOfWork())
                    {
                        var commandContextStack = commandContextStackFunc();
                        commandContextStack.Push(new CommandContext(null, uow));
                        try
                        {
                            uow.Begin();
                            await initializer.InitializeAsync(repositoryFunc());
                            await uow.CommitAsync();
                        }
                        finally
                        {
                            commandContextStack.Pop();
                        }
                    }
                }).GetAwaiter().GetResult();
            }
        }
        public DatabaseInitializerLoaderTests()
        {
            initializers = new List <IDatabaseInitializer>()
            {
                Substitute.For <IDatabaseInitializer>(),
                Substitute.For <IDatabaseInitializer>()
            };

            databaseInitializerDiscovery = Substitute.For <IDatabaseInitializerDiscovery>();
            databaseInitializerDiscovery.DiscoverDatabaseInitializers().Returns(initializers);

            unitOfWork        = Substitute.For <IUnitOfWork>();
            unitOfWorkFactory = Substitute.For <IUnitOfWorkFactory>();
            unitOfWorkFactory.CreateUnitOfWork().Returns(unitOfWork);

            repository          = Substitute.For <IRepository>();
            commandContextStack = new CommandContextStack();

            sut = new DatabaseInitializerLoader(databaseInitializerDiscovery, new DatabaseInitializerDependencyComparer(),
                                                () => repository, () => unitOfWorkFactory, () => commandContextStack);
        }