private static void ClearPreviousTransients(this HttpSessionStateBase session, INakedObject nakedObject, ObjectFlag flag)
 {
     if (nakedObject.Oid.HasPrevious)
     {
         if (nakedObject.Oid.Previous.IsTransient)
         {
             session.GetCache(flag).Remove(FrameworkHelper.GetObjectId(nakedObject.Oid.Previous));
         }
     }
 }
        public static object LastObject(this HttpSessionStateBase session, INakedObjectsFramework framework, ObjectFlag flag = ObjectFlag.None)
        {
            KeyValuePair <string, CacheMemento> lastEntry = session.GetCache(flag).OrderBy(kvp => kvp.Value.Added).LastOrDefault();

            if (lastEntry.Equals(default(KeyValuePair <string, CacheMemento>)))
            {
                return(null);
            }

            INakedObject lastObject = SafeGetNakedObjectFromId(lastEntry.Key, framework);

            if (lastObject.ResolveState.IsDestroyed())
            {
                session.GetCache(flag).Remove(lastEntry.Key);
                return(session.LastObject(framework, flag));
            }

            return(lastObject.Object);
        }
 private static IEnumerable <IObjectFacade> GetAndTidyCachedNakedObjectsOfType(this HttpSessionStateBase session, IFrameworkFacade facade, ITypeFacade spec, ObjectFlag flag)
 {
     session.ClearDestroyedObjectsOfType(facade, spec, flag);
     return(session.GetCache(flag).Where(cm => SameSpec(cm.Value.Spec, spec, facade)).OrderBy(kvp => kvp.Value.Added).Select(kvp => GetNakedObjectFromId(facade, kvp.Key)));
 }
        // This is dangerous - retrieves all cached objects from the database - use with care !

        private static IEnumerable <IObjectFacade> GetAndTidyCachedNakedObjects(this HttpSessionStateBase session, IFrameworkFacade facade, ObjectFlag flag)
        {
            session.ClearDestroyedObjects(facade, flag);
            return(session.GetCache(flag).OrderBy(kvp => kvp.Value.Added).Select(kvp => GetNakedObjectFromId(facade, kvp.Key)));
        }
 public static IEnumerable <string> AllCachedUrls(this HttpSessionStateBase session, ObjectFlag flag = ObjectFlag.None)
 {
     return(session.GetCache(flag).OrderBy(kvp => kvp.Value.Added).Where(kvp => kvp.Value.Url != null).Select(kvp => kvp.Value.Url));
 }
 public static void RemoveOthersFromCache(this HttpSessionStateBase session, IFrameworkFacade facade, IObjectFacade nakedObject, ObjectFlag flag = ObjectFlag.None)
 {
     session.GetCache(flag).RemoveOthersFromCache(facade, nakedObject);
 }
 public static void RemoveFromCache(this HttpSessionStateBase session, string objectId, ObjectFlag flag = ObjectFlag.None)
 {
     session.GetCache(flag).RemoveFromCache(objectId);
 }
 private static IEnumerable <INakedObject> GetAndTidyCachedNakedObjectsOfType(this HttpSessionStateBase session, INakedObjectsFramework framework, ITypeSpec spec, ObjectFlag flag)
 {
     session.ClearDestroyedObjectsOfType(framework, spec, flag);
     return(session.GetCache(flag).Where(cm => SameSpec(cm.Value.Spec, spec, framework)).OrderBy(kvp => kvp.Value.Added).Select(kvp => framework.GetNakedObjectFromId(kvp.Key)));
 }
 public static void RemoveOthersFromCache(this HttpSessionStateBase session, INakedObjectsFramework framework, INakedObject nakedObject, ObjectFlag flag = ObjectFlag.None)
 {
     session.GetCache(flag).RemoveOthersFromCache(framework, nakedObject);
 }
 internal static void TestAddToCache(this HttpSessionStateBase session, INakedObjectsFramework framework, INakedObject nakedObject, ObjectFlag flag = ObjectFlag.None)
 {
     session.GetCache(flag).AddToCache(framework, nakedObject, null, flag);
 }