private void CreateLibraryFromStrata( Library sourceLibrary, string targetFileName, List <int> keepStratumIds) { CreateTargetLibrary(sourceLibrary, targetFileName); WinFormSession wfs = (WinFormSession)this.Session; string KeepStratumIdString = CreateKeepStratumIdString(keepStratumIds); DataStoreConnection conn = new DataStoreConnection("SQLite", targetFileName); using (SyncroSimTransactionScope scope = Session.CreateTransactionScope()) { using (DataStore store = Session.CreateDataStore(conn)) { DataTable AllTables = store.CreateDataTableFromQuery( "SELECT name FROM sqlite_master WHERE type='table'", "AllTables"); foreach (DataRow dr in AllTables.Rows) { string TableName = Convert.ToString(dr["name"]); if (!ShouldProcessTable(TableName)) { continue; } DataTable TableSchema = GetTableSchema(TableName, store); if (TableSchema.Columns.Contains("StratumID")) { PurgeStratumIds(TableName, "StratumID", KeepStratumIdString, store); } if (TableSchema.Columns.Contains("StratumIDSource")) { PurgeStratumIds(TableName, "StratumIDSource", KeepStratumIdString, store); } if (TableSchema.Columns.Contains("StratumIDDest")) { PurgeStratumIds(TableName, "StratumIDDest", KeepStratumIdString, store); } } string Title = Path.GetFileNameWithoutExtension(targetFileName); string q = string.Format(CultureInfo.InvariantCulture, "UPDATE core_Library SET Name='{0}'", Title); store.ExecuteNonQuery(q); } scope.Complete(); } }
private void ConfigureDatabase(DataRow splitDataRow, bool isSpatailSplit) { using (SyncroSimTransactionScope scope = Session.CreateTransactionScope()) { string FileName = Convert.ToString(splitDataRow["FileName"], CultureInfo.InvariantCulture); using (DataStore store = Session.CreateDataStore(new DataStoreConnection(Strings.SQLITE_DATASTORE_NAME, FileName))) { UpdateRunControl(splitDataRow, store); RemoveSecondaryStrata(splitDataRow, store, this.ResultScenario); if (!isSpatailSplit) { UpdateInitialConditions(splitDataRow, store); UpdateTransitionTargets(splitDataRow, store); UpdateTransitionAttributeTargets(splitDataRow, store); } } scope.Complete(); } }