La memorizzazione nella cache di un actirecord di protagonista subsonic -madisce l'intero grafico degli oggetti

StackOverflow https://stackoverflow.com/questions/8966459

Domanda

Sto accidentando una raccolta di righe ActiveCord (subsonic). Quando guardo la cache con il profiler di memoria delle formiche, posso vedere che anche alcune tabelle correlate all'Actirecord, vorrei che la cache sono memorizzate nella cache. Ciò rende gli oggetti memorizzati nella cache molto grandi, a causa dei tavoli memorizzati in più (non necessari).

Qualche idea su come prevenirlo?

È stato utile?

Soluzione

Credo che dovrai modificare o rimuovere il caricamento pigro delle relazioni nelle classi di record attive.

Il comportamento di caricamento pigro è generato dal modello ActiveCord.tt, a partire dalla riga 300 in La versione più attuale:

        #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

Proverei a rimuovere l'intera regione e vedere se l'eccessiva memorizzazione nella cache viene risolta. Naturalmente, se ti affidi al comportamento di caricamento pigro, dovrai affrontarlo ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top