public void Constructor_inMemory_create_test() { using (var datastore = new CruiseDatastore_V3()) { ValidateDAL(datastore); } }
public void TestCopyTo() { var fileToCopyPath = Path.Combine(TestTempPath, "TestCopy.crz3"); var copiedFilePath = Path.Combine(TestTempPath, "TestCopy2.crz3"); try { using (var dal = new CruiseDatastore_V3(fileToCopyPath, true)) { dal.CopyTo(copiedFilePath); File.Exists(copiedFilePath).Should().BeTrue(); } } finally { if (File.Exists(fileToCopyPath)) { File.Delete(fileToCopyPath); } if (File.Exists(copiedFilePath)) { File.Delete(copiedFilePath); } } }
private (string, string, string) SetUpTestFile(string fileName, [CallerMemberName] string caller = null) { var filePath = Path.Combine(TestFilesDirectory, fileName); var baseFileName = Path.GetFileName(fileName); var orgFile = Path.Combine(TestTempPath, fileName); var crz3File = (string)null; // create copy of base file if (File.Exists(orgFile) == false) { File.Copy(filePath, orgFile); } crz3File = new Migrator().MigrateFromV2ToV3(orgFile, true); var v2againPath = Path.Combine(TestTempPath, caller + "_again_" + fileName); using (var v2again = new DAL(v2againPath, true)) using (var v3db = new CruiseDatastore_V3(crz3File)) { var cruiseID = v3db.ExecuteScalar <string>("SELECT CruiseID FROM Cruise;"); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(cruiseID, v3db, v2again); } return(orgFile, crz3File, v2againPath); }
public IEnumerable <LogConflict> GetLogConflicts(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID) { var sourceAlias = "src"; destination.AttachDB(source, sourceAlias); try { return(destination.Query <LogConflict>( $@"SELECT destT.CuttingUnitCode, destT.PlotNumber, destT.TreeNumber, destL.LogNumber, destL.LogID AS DestLogID, srcL.LogID AS SrcLogID FROM main.Log AS destL JOIN main.Tree AS destT USING (TreeID) JOIN {sourceAlias}.Tree AS srcT ON destT.CruiseID = srcT.CruiseID AND destT.CuttingUnitCode = srcT.CuttingUnitCode AND ifnull(destT.PlotNumber, 0) = ifnull(srcT.PlotNumber, 0) AND destT.TreeNumber = srcT.TreeNumber JOIN {sourceAlias}.Log AS srcL ON srcT.TreeID = srcL.TreeID AND destL.LogNumber = srcL.LogNumber WHERE destT.CruiseID = @p1 AND destL.LogID != srcL.LogID;", cruiseID).ToArray()); } finally { destination.DetachDB(sourceAlias); } }
public void Sync_SampleGroup_Add() { var fromPath = base.GetTempFilePath(".crz3", "SampleGroup_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "SampleGroup_Add_toFile"); var syncOptions = new CruiseSyncOptions(); var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var sampleGroupID = Guid.NewGuid().ToString(); fromDb.Insert(new SampleGroup() { CruiseID = cruiseID, SampleGroupID = sampleGroupID, SampleGroupCode = "10", StratumCode = Strata[0].StratumCode, }); var newSampleGroup = fromDb.From <SampleGroup>().Where("SampleGroupID = @p1").Query(sampleGroupID).Single(); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); var sampleGroupAgain = toDb.From <SampleGroup>().Where("SampleGroupID = @p1") .Query(sampleGroupID).FirstOrDefault(); sampleGroupAgain.Should().BeEquivalentTo(newSampleGroup); }
public void GetPlotStrataProxies(string method) { var units = Units; var unit = units[0]; var newStratumCode = "01"; using (var database = new CruiseDatastore_V3()) { var saleID = SaleID; var cruiseID = CruiseID; var datastore = new CuttingUnitDatastore(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID)); InitializeDatabase(database, cruiseID, saleID, units, null, null, null, null, null, null); datastore.GetPlotStrataProxies(unit).Should().HaveCount(0); var stratumID = Guid.NewGuid().ToString(); database.Execute($"INSERT INTO Stratum (CruiseID, StratumID, StratumCode, Method) VALUES ('{cruiseID}', '{stratumID}', '{newStratumCode}', '{method}');"); database.Execute($"INSERT INTO CuttingUnit_Stratum (CruiseID, CuttingUnitCode, StratumCode) VALUES ('{cruiseID}', '{unit}', '{newStratumCode}')"); var result = datastore.GetPlotStrataProxies(unit).ToArray(); result.Should().HaveCount(1); } }
private void ValidateDAL(CruiseDatastore_V3 db) { var f_keys = db.ExecuteScalar <string>("PRAGMA foreign_keys;"); f_keys.Should().BeOneOf("on", "1", "yes", "true"); var version = db.DatabaseVersion; version.Should().NotBeNull(); Version.TryParse(version, out var versionParsed).Should().BeTrue(version); var createdVersion = db.CreatedVersion; createdVersion.Should().NotBeNullOrEmpty(); // validate that created version in in valid format Version.TryParse(version, out var createdVersionParsed).Should().BeTrue(createdVersion); db.ExecuteScalar <int>("SELECT count(*) FROM MessageLog WHERE Program IS NULL or Program = '';") .Should().Be(0); db.ExecuteScalar <string>("SELECT Message FROM MessageLog ORDER BY RowID DESC LIMIT 1;") .Should().Be("File Opened"); //var timeStamp = latestMessage.Time; //timeStamp.Should().NotBeNullOrWhiteSpace(); ////assert that file opened message was within the last 30 seconds //DateTime.Parse(timeStamp).Subtract(DateTime.Now).TotalSeconds.Should().BeLessThan(30); }
public void Sync_UnitStratum_Add() { var fromPath = base.GetTempFilePath(".crz3", "fromFile"); var toPath = base.GetTempFilePath(".crz3", "toFile"); var syncOptions = new CruiseSyncOptions() { Design = SyncFlags.Insert, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var newCUST = new CuttingUnit_Stratum() { CruiseID = cruiseID, CuttingUnitCode = Units[1], StratumCode = NonPlotStrata[0].StratumCode, }; fromDb.Insert(newCUST); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("CuttingUnit_Stratum", "WHERE CuttingUnitCode = @p1 AND StratumCode = @p2", newCUST.CuttingUnitCode, newCUST.StratumCode) .Should().Be(1); }
public void Sync_SampleGroup_Delete() { var init = new DatabaseInitializer(); var fromPath = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_toFile"); using var fromDb = init.CreateDatabaseFile(fromPath); var cruiseID = init.CruiseID; var saleID = init.SaleID; var newStratum = new Stratum { CruiseID = cruiseID, StratumID = Guid.NewGuid().ToString(), StratumCode = "newStratumCode1", }; fromDb.Insert(newStratum); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); fromDb.Delete(newStratum); var syncer = new DeleteSysncer(); var syncOptions = new CruiseSyncOptions(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("Stratum", "WHERE StratumID = @p1", newStratum.StratumID) .Should().Be(0); }
public void SyncStratumTemplates_Add() { var fromPath = base.GetTempFilePath(".crz3", "SyncStratumTemplates_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "SyncStratumTemplates_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Processing = SyncFlags.Insert, }; var init = new DatabaseInitializer(); var cruiseID = init.CruiseID; var saleID = init.SaleID; using var fromDb = init.CreateDatabaseFile(fromPath); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var st = new StratumTemplate { CruiseID = cruiseID, StratumTemplateName = "something", }; fromDb.Insert(st); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.From <StratumTemplate>().Count().Should().Be(1); }
public void MigrateFromV2ToV3(string v2Path, CruiseDatastore_V3 v3db, string deviceID = null) { using (var v2Cruise = new CruiseDatastore(v2Path, false, null, new Updater_V2())) { MigrateFromV2ToV3(v2Cruise, v3db, deviceID: deviceID); } }
public void Sync_Reports_Add() { var rand = new Bogus.Randomizer(); var fromPath = base.GetTempFilePath(".crz3", "Sync_Reports_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sync_Reports_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Processing = SyncFlags.Insert, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var reportID = Guid.NewGuid().ToString(); var report = new Reports { CruiseID = cruiseID, ReportID = reportID, Title = rand.String(), }; fromDb.Insert(report); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("Reports", "WHERE ReportID = @p1", reportID).Should().Be(1); }
public void SyncVolumeEquations_Add() { var rand = new Bogus.Randomizer(); var fromPath = base.GetTempFilePath(".crz3", "SyncVolumeEquations_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "SyncVolumeEquations_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Processing = SyncFlags.Insert, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var volEq = new VolumeEquation { CruiseID = cruiseID, Species = "sp1", PrimaryProduct = "01", VolumeEquationNumber = "something" }; fromDb.Insert(volEq); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("VolumeEquation", "WHERE VolumeEquationNumber = @p1", volEq.VolumeEquationNumber).Should().Be(1); }
public CruiseDatastore_V3 CreateDatabaseFile(string path, string cruiseID = null, string saleID = null, string saleNumber = null) { cruiseID = cruiseID ?? CruiseID; saleID = saleID ?? SaleID; saleNumber = saleNumber ?? SaleNumber; var units = Units; var strata = Strata; var unitStrata = UnitStrata; var sampleGroups = SampleGroups; var species = Species; var tdvs = TreeDefaults; var subPops = Subpops; var database = new CruiseDatastore_V3(path, true); InitializeDatabase(database, cruiseID, saleID, saleNumber, units, strata, unitStrata, sampleGroups, species, tdvs, subPops); return(database); }
public void RunDelete_WithConvertedFile(string tableName) { var skipTables = new[] { "LK_CruiseMethod", "LK_Product", "LK_Purpose", "LK_Region", "LK_UOM", "LK_TallyEntryType", "Species", "TreeField", }; // some tables don't have cascading deletes so we need to skip them Skip.If(skipTables.Contains(tableName)); var testFile = "MultiTest.2014.10.31.cruise"; var(orgFile, crz3) = SetUpTestFile(testFile); var initializer = new DatabaseInitializer(); using (var database = new CruiseDatastore_V3(crz3)) { //database.OpenConnection(); //database.Execute("PRAGMA foreign_keys=0;"); database.Invoking(x => x.Execute($"DELETE FROM {tableName};")) .Should().NotThrow(); //var fKeyErrors = database.QueryGeneric("PRAGMA foreign_key_check;"); //Output.WriteLine(string.Join("|\r\n",fKeyErrors.Select(x=> x.ToString()).ToArray())); //fKeyErrors.Should().BeEmpty(); } }
public void Sync_Device_Add() { var fromPath = base.GetTempFilePath(".crz3", "fromFile"); var toPath = base.GetTempFilePath(".crz3", "toFile"); var syncOptions = new CruiseSyncOptions() { Design = SyncFlags.Insert, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var newDevice = new Device() { CruiseID = cruiseID, DeviceID = Rand.Guid().ToString(), }; fromDb.Insert(newDevice); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("Device", "WHERE DeviceID = @p1 AND CruiseID = @p2", newDevice.DeviceID, newDevice.CruiseID) .Should().Be(1); }
public IEnumerable <TreeConflict> GetTreeConflicts(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID) { var sourceAlias = "src"; destination.AttachDB(source, sourceAlias); try { return(destination.Query <TreeConflict>( $@"SELECT destT.CuttingUnitCode, destT.PlotNumber, destT.TreeNumber, srcT.TreeID AS SrcTreeID, destT.TreeID AS DestTreeID FROM main.Tree AS destT JOIN {sourceAlias}.Tree AS srcT ON destT.CruiseID = srcT.CruiseID AND destT.CuttingUnitCode = srcT.CuttingUnitCode AND destT.PlotNumber = srcT.PlotNumber AND destT.TreeNumber = srcT.TreeNumber WHERE destT.CruiseID = @p1 AND destT.TreeID != srcT.TreeID;", cruiseID).ToArray()); } finally { destination.DetachDB(sourceAlias); } }
protected override void RegisterTypes(IContainerRegistry containerRegistry) { if (containerRegistry.IsRegistered <IFileDialogService>() == false) { containerRegistry.Register <IFileDialogService, XamarinFileDialogService>(); } if (containerRegistry.IsRegistered <IDataserviceProvider>() == false) { var deviceInfo = Container.Resolve <IDeviceInfoService>(); var fileSystemService = Container.Resolve <IFileSystemService>(); var cruiseDbPath = fileSystemService.DefaultCruiseDatabasePath; if (File.Exists(cruiseDbPath) == false) { var newDb = new CruiseDatastore_V3(cruiseDbPath, true); } _dataserviceProvider = new DataserviceProvider(cruiseDbPath, deviceInfo); _dataserviceProvider.RegisterDataservices(containerRegistry); containerRegistry.RegisterInstance <IDataserviceProvider>(_dataserviceProvider); } if (containerRegistry.IsRegistered <ICruisersDataservice>() == false) { containerRegistry.RegisterInstance <ICruisersDataservice>(_cruisersDataservice = new CruisersDataservice(this)); } }
public void Copy(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID) { var srcConn = source.OpenConnection(); try { var destConn = destination.OpenConnection(); try { destination.BeginTransaction(); try { Copy(srcConn, destConn, cruiseID); destination.CommitTransaction(); } catch { destination.RollbackTransaction(); throw; } } finally { destination.ReleaseConnection(); } } finally { source.ReleaseConnection(); } }
public void Sync_CuttingUnit_Add() { var fromPath = base.GetTempFilePath(".crz3", "CuttingUnit_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "CuttingUnit_Add_toFile"); var syncOptions = new CruiseSyncOptions(); var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var cuttingUnitID = Guid.NewGuid().ToString(); fromDb.Insert(new CuttingUnit() { CruiseID = cruiseID, CuttingUnitID = cuttingUnitID, CuttingUnitCode = "10", }); var newCuttingUnit = fromDb.From <CuttingUnit>().Where("CuttingUnitID = @p1").Query(cuttingUnitID).Single(); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); var cuttingUnitAgain = toDb.From <CuttingUnit>().Where("CuttingUnitID = @p1") .Query(cuttingUnitID).FirstOrDefault(); cuttingUnitAgain.Should().BeEquivalentTo(newCuttingUnit, x => x.Excluding(y => y.Modified_TS)); }
public void Sync_BiomassEquation_Add() { var fromPath = base.GetTempFilePath(".crz3", "Sync_BiomassEquations_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sync_BiomassEquations_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Processing = SyncFlags.InsertUpdate, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var newBiomassEquation = new BiomassEquation { CruiseID = cruiseID, Component = "sfdf", Species = "sp1", Product = "01", LiveDead = "L", }; fromDb.Insert(newBiomassEquation); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.From <BiomassEquation>().Count().Should().Be(1); }
public void MigrateFromV2ToV3(string v2Path, string newFilePath, string deviceID = null) { using (var newCruise = new CruiseDatastore_V3(newFilePath, true)) { MigrateFromV2ToV3(v2Path, newCruise, deviceID: deviceID); } }
public void Sync_Sale_Update() { var fromPath = base.GetTempFilePath(".crz3", "Sale_Update_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sale_Update_toFile"); var syncOptions = new CruiseSyncOptions(); var cruiseID = CruiseID; var saleID = SaleID; using var fromDb = CreateDatabaseFile(fromPath); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var sale = fromDb.From <Sale>() .Where("SaleID = @p1") .Query(saleID) .FirstOrDefault(); sale.Remarks = Rand.String(); fromDb.Update(sale); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); var saleAgain = toDb.From <Sale>().Where("SaleID = @p1").Query(saleID).FirstOrDefault(); saleAgain.Should().BeEquivalentTo(sale, x => x.Excluding(y => y.Modified_TS)); }
public void GetSamplerBySampleGroupCode() { var unitCode = "u1"; var stratumCode = "st3"; var sampleGroupCode = "sg1"; var samplingFrequency = 5; var insuranceFreq = 2; var method = CruiseDAL.Schema.CruiseMethods.STR; using (var database = new CruiseDatastore_V3()) { var saleID = SaleID; var cruiseID = CruiseID; base.InitializeDatabase(database, cruiseID, saleID, new[] { unitCode }, new CruiseDAL.V3.Models.Stratum[] { new CruiseDAL.V3.Models.Stratum() { StratumCode = stratumCode, Method = method }, }, new CruiseDAL.V3.Models.CuttingUnit_Stratum[] { new CruiseDAL.V3.Models.CuttingUnit_Stratum() { CuttingUnitCode = unitCode, StratumCode = stratumCode }, }, new CruiseDAL.V3.Models.SampleGroup[] { new CruiseDAL.V3.Models.SampleGroup() { StratumCode = stratumCode, SampleGroupCode = sampleGroupCode, SamplingFrequency = samplingFrequency, InsuranceFrequency = insuranceFreq, }, }, new[] { "sp1", "sp2" }, null, null ); var ds = new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID); var repo = new SampleSelectorRepository(ds); var sampler = repo.GetSamplerBySampleGroupCode(stratumCode, sampleGroupCode); sampler.ITreeFrequency.Should().Be(insuranceFreq); ((FMSC.Sampling.IFrequencyBasedSelecter)sampler).Frequency.Should().Be(samplingFrequency); sampler.Should().NotBeNull(); var samplerAgain = repo.GetSamplerBySampleGroupCode(stratumCode, sampleGroupCode); samplerAgain.Should().BeSameAs(sampler); } }
public void Ctor_with_empty_path() { Action action = () => { var db = new CruiseDatastore_V3(""); }; action.Should().Throw <ArgumentException>(); }
public DataserviceBase(CruiseDatastore_V3 database, string deviceID) { if (string.IsNullOrWhiteSpace(deviceID)) { throw new ArgumentException($"'{nameof(deviceID)}' cannot be null or whitespace", nameof(deviceID)); } DeviceID = deviceID; Database = database ?? throw new ArgumentNullException(nameof(database)); }
public void DumpDatabaseInfo(CruiseDatastore_V3 ds, params string[] tables) { Output.WriteLine($"DAL Version: {ds.DatabaseVersion}"); foreach (var table in tables) { var tableSql = ds.GetTableSQL(table); Output.WriteLine(tableSql); } }
public void Sync_Plot_Stratum_Update() { var fromPath = base.GetTempFilePath(".crz3", "Sync_Plot_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sync_Plot_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Design = SyncFlags.Insert, FieldData = SyncFlags.InsertUpdate, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); var plot = new Plot() { CruiseID = cruiseID, PlotID = Guid.NewGuid().ToString(), CuttingUnitCode = Units[0], PlotNumber = 1, }; fromDb.Insert(plot); var plotStratum = new Plot_Stratum() { CruiseID = cruiseID, PlotNumber = plot.PlotNumber, CuttingUnitCode = plot.CuttingUnitCode, StratumCode = PlotStrata[0].StratumCode, }; fromDb.Insert(plotStratum); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); plotStratum.KPI = Rand.Double(); plotStratum.ThreePRandomValue = Rand.Int(); toDb.Update(plotStratum); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); var plotStratumAgain = toDb .From <Plot_Stratum>() .Where("Plot_Stratum_CN = @p1") .Query(plotStratum.Plot_Stratum_CN) .FirstOrDefault(); plotStratumAgain.Should().BeEquivalentTo(plotStratum, config => config.Excluding(x => x.Modified_TS)); }
public void Constructor_file_create_test() { var filePath = GetTempFilePathWithExt(".crz3", "testCreate"); Output.WriteLine(filePath); RegesterFileForCleanUp(filePath); var datastore = new CruiseDatastore_V3(filePath, true); ValidateDAL(datastore); }
public void Copy() { var initializer = new DatabaseInitializer(); using (var srcDb = initializer.CreateDatabase()) using (var destDb = new CruiseDatastore_V3()) { var copier = new CruiseCopier(); copier.Copy(srcDb, destDb, initializer.CruiseID); } }