private void Evict(ORMGOUserGroup result, NHibernate.ISession session)
        {
            foreach (var entity in session.GetSessionImplementation().PersistenceContext.EntitiesByKey.Values.ToArray())
            {
                var evictee = entity as ORMGOUserGroup;

                if (evictee != null && evictee.CompositeIdentity.Equals(result.CompositeIdentity))
                {
                    session.Evict(evictee);
                }
            }
        }
        private void Evict(ORMGOLoginHistory result, NHibernate.ISession session)
        {
            foreach (var entity in session.GetSessionImplementation().PersistenceContext.EntitiesByKey.Values.ToArray())
            {
                var evictee = entity as ORMGOLoginHistory;

                if (evictee != null && evictee.Id == result.Id)
                {
                    session.Evict(evictee);
                }
            }
        }
        private void Evict(ORMUserProfile result, NHibernate.ISession session)
        {
            foreach (var entity in session.GetSessionImplementation().PersistenceContext.EntitiesByKey.Values.ToArray())
            {
                var evictee = entity as ORMUserProfile;

                if (evictee != null && evictee.Uri == result.Uri)
                {
                    session.Evict(evictee);
                }
            }
        }
Example #4
0
        public static void ProcessAuditProperties(object entity, DateTime dtNow, IDictionary <int, string> auditedObjects, NHibernate.ISession nHibernateSession)
        {
            Type entityType = null;

            try
            {
                object unProxiedEntity = nHibernateSession.GetSessionImplementation().PersistenceContext.Unproxy(entity);
                entityType = unProxiedEntity.GetType();
            }
            catch
            {
                //Es un proxy que no pudo ser inicializado...
                return;
            }

            if (auditedObjects == null)
            {
                auditedObjects = new Dictionary <int, string>();
            }

            if (auditedObjects.ContainsKey(entity.GetHashCode()))
            {
                return;
            }

            Nullable <int> primaryKeyValue = (Nullable <int>)GetPrimaryKeyPropertyValue(entityType, entity);

            if (entityType.IsSubclassOf(typeof(BaseEntity)))
            {
                auditedObjects.Add(entity.GetHashCode(), entityType.Name);

                ISession session = SamsaraAppContext.Resolve <ISession>();

                if ((entity as BaseEntity).Activated == null)
                {
                    (entity as BaseEntity).Activated = true;
                }
                if ((entity as BaseEntity).Deleted == null)
                {
                    (entity as BaseEntity).Deleted = false;
                }

                if (primaryKeyValue <= 0)
                {
                    (entity as BaseEntity).CreatedBy = session.UserId;
                    (entity as BaseEntity).CreatedOn = dtNow;
                }
                else
                {
                    (entity as BaseEntity).UpdatedBy = session.UserId;
                    (entity as BaseEntity).UpdatedOn = dtNow;
                }
            }

            foreach (PropertyInfo propertyInfo in entityType.GetProperties())
            {
                object value = entityType.GetProperty(propertyInfo.Name).GetValue(entity, null);

                if (value != null && value.GetType().IsSubclassOf(typeof(BaseEntity)))
                {
                    ProcessAuditProperties(value, dtNow, auditedObjects, nHibernateSession);
                }

                if (value != null && value.GetType().GetInterface(typeof(IEnumerable).FullName) != null)
                {
                    foreach (object item in (value as IEnumerable))
                    {
                        if (item != null && item.GetType().IsSubclassOf(typeof(BaseEntity)))
                        {
                            ProcessAuditProperties(item, dtNow, auditedObjects, nHibernateSession);
                        }
                    }
                }
            }
        }