public EntityBase GetEntityById(Type type, object id) { if (id == null) { return(null); } ILoader loader = GetLoader(type); if (!ClassFactory.GetObjectDescription(type, this).IsAggregated) { EntityBase e = Caches.GetEntityById(loader.ReflectedType, id); if (e == null) { if (_loadAllOnGetById && !ClassFactory.GetObjectDescription(type, this).IsDenyGetAllOnGetById) { List <EntityBase> temp = GetEntities(type); e = Caches[loader.ReflectedType].Contains(id) ? Caches[loader.ReflectedType][id] : null; } else { e = loader.LoadEntityById(id); } } return(e); } else { AgregatedClassAttribute aggr = ClassFactory.GetObjectDescription(type, this).GetAttribute <AgregatedClassAttribute>(); List <EntityBase> l = new List <EntityBase>(); foreach (Type t in aggr.ChildTypes) { EntityBase e = GetEntityById(t, id); if (e != null) { return(e); } } return(null); } }