public static int DeleteStratum(Datastore dal, StratumDO stratum) { // check tree table for data if (dal.GetRowCount("Tree", "WHERE Stratum_CN = @p1", stratum.Stratum_CN) > 0) { return(-1); } // check plot table for data if (dal.GetRowCount("Plot", "WHERE Stratum_CN = @p1", stratum.Stratum_CN) > 0) { return(-1); } // Check Count table for each sample group if (dal.GetRowCount("CountTree", "JOIN SampleGroup ON CountTree.SampleGroup_CN = SampleGroup.SampleGroup_CN WHERE SampleGroup.Stratum_CN = @p1 AND CountTree.TreeCount > 0", stratum.Stratum_CN) > 0) { return(-1); } //Delete sample groups for stratum List <SampleGroupDO> allSGInStratum = dal.From <SampleGroupDO>() .Where("Stratum_CN = @p1") .Read(stratum.Stratum_CN).ToList(); //.Read<SampleGroupDO>("WHERE Stratum_CN = ?", stratum.Stratum_CN); foreach (SampleGroupDO Sg in allSGInStratum) { //Delete Count Records for stratum List <CountTreeDO> allCountInSG = dal.From <CountTreeDO>() .Where("SampleGroup_CN = @p1") .Read(Sg.SampleGroup_CN).ToList(); //.Read<CountTreeDO>("WHERE SampleGroup_CN = ?", Sg.SampleGroup_CN); foreach (CountTreeDO Cnt in allCountInSG) { Cnt.Delete(); } Sg.Delete(); } //Delete stratum stats for stratum List <StratumStatsDO> allStratumStatsInStratum = dal.From <StratumStatsDO>() .Where("Stratum_CN = @p1") .Read(stratum.Stratum_CN) .ToList(); //.Read<StratumStatsDO>( //"WHERE Stratum_CN = ?", stratum.Stratum_CN); foreach (StratumStatsDO StratumStats in allStratumStatsInStratum) { StratumStats.DeleteStratumStats(dal, StratumStats.StratumStats_CN); } stratum.Delete(); return(0); }
public static void RecursiveDeleteStratum(StratumDO stratum) { Datastore db = stratum.DAL; db.BeginTransaction(); try { string command = String.Format(@"DELETE From CuttingUnitStratum WHERE Stratum_CN = {0}; DELETE FROM Log WHERE Tree_CN IN (SELECT Tree_CN FROM Tree WHERE Tree.Stratum_CN = {0}); DELETE FROM LogStock WHERE Tree_CN IN (SELECT Tree_CN FROM Tree WHERE Tree.Stratum_CN = {0}); DELETE FROM TreeCalculatedValues WHERE Tree_CN IN (SELECT Tree_CN FROM Tree WHERE Tree.Stratum_CN = {0}); DELETE FROM Tree WHERE Stratum_CN = {0}; DELETE FROM Plot WHERE Stratum_CN = {0}; DELETE FROM TreeEstimate WHERE CountTree_CN IN (SELECT CountTree_CN FROM CountTree JOIN SampleGroup USING (SampleGroup_CN) WHERE Stratum_CN = {0}); DELETE FROM CountTree WHERE SampleGroup_CN IN (SELECT SampleGroup_CN FROM SampleGroup WHERE SampleGroup.Stratum_CN = {0}); DELETE FROM SampleGroupTreeDefaultValue WHERE SampleGroup_CN IN (SELECT SampleGroup_CN FROM SampleGroup WHERE SampleGroup.Stratum_CN = {0}); DELETE FROM SamplerState WHERE SampleGroup_CN IN (SELECT SampleGroup_CN FROM SampleGroup WHERE SampleGroup.Stratum_CN = {0}); DELETE FROM SampleGroup WHERE Stratum_CN = {0}; DELETE FROM TreeFieldSetup WHERE Stratum_CN = {0}; DELETE FROM LogFieldSetup WHERE Stratum_CN = {0}; DELETE FROM FixCNTTallyPopulation WHERE FixCNTTallyClass_CN IN (SELECT FixCNTtallyClass_CN FROM FixCNTTallyClass WHERE Stratum_CN = {0}); DELETE FROM FixCNTTallyClass WHERE Stratum_CN = {0}; DELETE FROM SampleGroupStatsTreeDefaultValue WHERE SampleGroupStats_CN IN (SELECT SampleGroupStats_CN FROM SampleGroupStats AS sgs JOIN StratumStats AS ss USING (StratumStats_CN) WHERE Stratum_CN = {0}); DELETE FROM SampleGroupStats WHERE StratumStats_CN IN (SELECT StratumStats_CN FROM StratumStats WHERE Stratum_CN = {0}); DELETE FROM StratumStats WHERE Stratum_CN = {0};", stratum.Stratum_CN); db.Execute(command); stratum.Delete(); db.CommitTransaction(); } catch (Exception e) { db.RollbackTransaction(); throw e; } }