public static void Move(Guid SourceID, Guid DestID) { using (LinqMicajahDataContext dc = new LinqMicajahDataContext()) { GuidPair Pair = (from mc1 in dc.MetricCategory join mc2 in dc.MetricCategory on mc1.Name equals mc2.Name where (mc1.InstanceId == LinqMicajahDataContext.InstanceId) && (mc2.InstanceId == LinqMicajahDataContext.InstanceId) && (mc1.MetricCategoryID == SourceID) && (mc2.ParentId == DestID) && mc1.Status == true && mc2.Status == true select new GuidPair { SourceGuid = mc1.MetricCategoryID, DestGuid = mc2.MetricCategoryID }).FirstOrNull(); if (Pair == null) { // move MetricCategory SourceMC = (from mc in dc.MetricCategory where (mc.InstanceId == LinqMicajahDataContext.InstanceId) && (mc.MetricCategoryID == SourceID) select mc).FirstOrNull(); if (SourceMC != null) { SourceMC.ParentId = DestID; } dc.SubmitChanges(); } else if (SourceID != Pair.DestGuid) { MergeMC(dc, SourceID, Pair.DestGuid); // merge } } }
public static void Move(Guid SourceID, Guid DestID) { using (LinqMicajahDataContext dc = new LinqMicajahDataContext()) { GuidPair Pair = (from gca1 in dc.GroupCategoryAspect join gca2 in dc.GroupCategoryAspect on new { gca1.InstanceId, gca1.Name } equals new { gca2.InstanceId, gca2.Name } where (gca1.InstanceId == LinqMicajahDataContext.InstanceId) && (gca2.InstanceId == LinqMicajahDataContext.InstanceId) && (gca1.GroupCategoryAspectID == SourceID) && (gca2.ParentId == DestID) && gca1.Status == true && gca2.Status == true select new GuidPair { SourceGuid = gca1.GroupCategoryAspectID, DestGuid = gca2.GroupCategoryAspectID }).FirstOrNull(); if (Pair == null) { GroupCategoryAspect SourceGCA = (from gca in dc.GroupCategoryAspect where (gca.InstanceId == LinqMicajahDataContext.InstanceId) && (gca.GroupCategoryAspectID == SourceID) select gca).FirstOrNull(); if (SourceGCA != null) { SourceGCA.ParentId = DestID; } dc.SubmitChanges(); } else if (SourceID != Pair.DestGuid) { MergeGCA(dc, SourceID, Pair.DestGuid); // merge } } }