/// <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(); } }
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); } } } } } }