Question

Je cache une collection de lignes ActiveRecord (subsonique). Quand je regarde le cache avec le profileur de mémoire des fourmis, je peux voir que certaines tables connexes à l'activeRecord que je voudrais mettre en cache sont également mises en cache. Cela rend les articles en cache très grands, en raison des tables mises en cache en plus (non nécessaires).

Des idées sur la façon d'empêcher cela?

Était-ce utile?

La solution

Je crois que vous devrez modifier ou supprimer le chargement paresseux des relations dans les classes d'enregistrement actives.

Le comportement de chargement paresseux est généré par le modèle activerecord.tt, commençant à la ligne 300 dans la version la plus récente:

        #region ' Foreign Keys '
<#
            List<string> fkCreated = new List<string>();
            foreach(FKTable fk in tbl.FKTables)
            {

                if(!ExcludeTables.Contains(fk.OtherTable)){
                    string propName=fk.OtherQueryable;
                    if(fkCreated.Contains(propName))
                    {
                        propName=fk.OtherQueryable+fkCreated.Count.ToString();
                    }

                    fkCreated.Add(fk.OtherQueryable);


#>
        public IQueryable<<#=fk.OtherClass #>> <#=propName #>
        {
            get
            {

                  var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();
                  return from items in repo.GetAll()
                       where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
                       select items;
            }
        }

<#
                }
            }

#>
        #endregion

J'essaierais de retirer toute cette région et de voir si la mise en cache excessive est résolue. Bien sûr, si vous comptez sur le comportement de chargement paresseux, vous devrez y remédier maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top