public PlatformDatabaseCreationRepositoryFinder(PlatformDatabaseCreationOptions options)
        {
            var cata   = options.GetBuilder(PlatformDatabaseCreation.DefaultCatalogueDatabaseName);
            var export = options.GetBuilder(PlatformDatabaseCreation.DefaultDataExportDatabaseName);

            _linkedRepositoryProvider = new LinkedRepositoryProvider(cata.ConnectionString, export.ConnectionString);
        }
        public virtual IRDMPPlatformRepositoryServiceLocator GetRepositoryLocator()
        {
            if (_repositoryLocator == null)
            {
                GetConnectionStrings(out var c, out var d);
                _repositoryLocator = new LinkedRepositoryProvider(c?.ConnectionString, d?.ConnectionString);
            }

            return(_repositoryLocator);
        }
        public void AllowDeletingWhenDataExportManagerIsNotSet()
        {
            var noDataExportManagerExists = new LinkedRepositoryProvider(CatalogueRepository.ConnectionString,null);

            var obscura1 = new BetweenCatalogueAndDataExportObscureDependencyFinder(RepositoryLocator);
            var obscura2 = new BetweenCatalogueAndDataExportObscureDependencyFinder(noDataExportManagerExists);

            var cata = new Catalogue(CatalogueRepository, "MyCata");
            var dataset = new ExtractableDataSet(DataExportRepository,cata);

            //we cannot delete it because there is a dependency
            var ex = Assert.Throws<Exception>(() => obscura1.ThrowIfDeleteDisallowed(cata));
            Assert.IsTrue(ex.Message.Contains("Cannot delete Catalogue MyCata because there are ExtractableDataSets which depend on them "));

            //the second finder simulates when the repository locator doesn't have a record of the data export repository so it is unable to check it so it will let you delete it just fine
            Assert.DoesNotThrow(() => obscura2.ThrowIfDeleteDisallowed(cata));

            //now delete them in the correct order
            dataset.DeleteInDatabase();
            cata.DeleteInDatabase();

        }
Exemple #4
0
        public virtual IRDMPPlatformRepositoryServiceLocator GetRepositoryLocator()
        {
            if (_repositoryLocator == null)
            {
                SqlConnectionStringBuilder c;

                if (CatalogueConnectionString != null)
                {
                    c = new SqlConnectionStringBuilder(CatalogueConnectionString);
                }
                else
                {
                    c                    = new SqlConnectionStringBuilder();
                    c.DataSource         = ServerName;
                    c.IntegratedSecurity = true;
                    c.InitialCatalog     = CatalogueDatabaseName;
                }

                SqlConnectionStringBuilder d = null;
                if (DataExportConnectionString != null)
                {
                    d = new SqlConnectionStringBuilder(DataExportConnectionString);
                }
                else
                if (DataExportDatabaseName != null)
                {
                    d                    = new SqlConnectionStringBuilder();
                    d.DataSource         = ServerName;
                    d.IntegratedSecurity = true;
                    d.InitialCatalog     = DataExportDatabaseName;
                }

                CatalogueRepository.SuppressHelpLoading = true;

                _repositoryLocator = new LinkedRepositoryProvider(c.ConnectionString, d != null ? d.ConnectionString : null);
            }

            return(_repositoryLocator);
        }