예제 #1
0
        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);
        }
예제 #2
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;
            }
        }