コード例 #1
0
ファイル: TreeRepository.cs プロジェクト: galehouse5/TreesDb
        public void RemoveMeasurementsByTrip(Model.Imports.Trip trip)
        {
            var trees = Registry.Session.CreateCriteria <Tree>()
                        .CreateAlias("Measurements", "measurement")
                        .CreateAlias("measurement.ImportingTrip", "importingTrip")
                        .Add(Restrictions.Eq("importingTrip.Id", trip.Id))
                        .List <Tree>();

            foreach (var tree in trees)
            {
                // evaluate where clause immediately by calling ToList() to avoid modification of collection during enumeration
                foreach (var measurementToRemove in tree.Measurements.Where(measurement => measurement.ImportingTrip.Equals(trip)).ToList())
                {
                    tree.RemoveMeasurement(measurementToRemove);
                }
                if (tree.Measurements.Count < 1)
                {
                    Registry.Session.Delete(tree);
                }
            }
        }
コード例 #2
0
ファイル: SiteRepository.cs プロジェクト: galehouse5/TreesDb
        public void RemoveVisitsByTrip(Model.Imports.Trip trip)
        {
            var sites = Registry.Session.CreateCriteria <Site>()
                        .CreateAlias("Visits", "visit")
                        .CreateAlias("visit.ImportingTrip", "importingTrip")
                        .Add(Restrictions.Eq("importingTrip.Id", trip.Id))
                        .List <Site>();

            foreach (var site in sites)
            {
                foreach (var visitToRemove in site.Visits
                         .Where(v => v.ImportingTrip.Equals(trip))
                         .ToArray())
                {
                    site.RemoveVisit(visitToRemove);
                }

                if (site.Visits.Count < 1)
                {
                    Registry.Session.Delete(site);
                }
            }
        }