Example #1
0
 /// <summary>
 /// Dispose the pool.
 /// </summary>
 public void Dispose()
 {
     locker.EnterWriteLock();
     try
     {
         foreach (var element in idleObjects)
         {
             factory.Destroy(element.Key);
         }
         objectReturned.Dispose();
         idleObjects.Clear();
     }
     finally
     {
         locker.ExitWriteLock();
     }
 }
Example #2
0
        private void BuildEdgeMaps()
        {
            currentParentEdges.Clear();
            originalChildEdges.Clear();
            originalChildReferences.Clear();
            var list = new List <TrackedObject>(tracker.GetInterestingObjects());

            foreach (var item in list)
            {
                var isNew = item.IsNew;
                var type  = item.Type;
                foreach (var association in type.Associations)
                {
                    if (association.IsForeignKey)
                    {
                        var otherItem  = GetOtherItem(association, item.Current);
                        var otherItem2 = GetOtherItem(association, item.Original);
                        var flag       = (otherItem != null && otherItem.IsDeleted) || (otherItem2?.IsDeleted ?? false);
                        var flag2      = otherItem?.IsNew ?? false;
                        if ((isNew | flag | flag2) || HasAssociationChanged(association, item))
                        {
                            if (otherItem != null)
                            {
                                currentParentEdges.Add(association, item, otherItem);
                            }
                            if (otherItem2 != null)
                            {
                                if (association.IsUnique)
                                {
                                    originalChildEdges.Add(association, otherItem2, item);
                                }
                                originalChildReferences.Add(otherItem2, item);
                            }
                        }
                    }
                }
            }
        }