2012-01-23 6 views
0

私はアクティブレコードの行の集合をキャッシュしています(亜音速)。 ANTS Memory Profilerでキャッシュを見ると、私がキャッシュしたいactiverecordに関連するテーブルもキャッシュされていることがわかります。これにより、キャッシュされた項目が非常に大きくなります。これは、追加の(不要な)キャッシュされた表があるためです。subsonicproject activerecordをキャッシュするとオブジェクト全体のグラフがキャッシュされます

これを防止する方法についてのご意見はありますか?

答えて

0

私はあなたがActive Recordクラスの関係の遅延読み込みを修正または削除する必要があると思います。

遅延ロードの挙動はthe most current versionにライン300から始まる、ActiveRecord.ttテンプレートによって生成されます。

 #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 

過度のキャッシングが解決された場合、私はこの全体の領域を除去し、見しようとするだろう。もちろん、遅延ロードの動作に頼っている場合は、これを解決する必要があります。

+0

ありがとうございました。私はactiverecord-templateを変更したくないので、代わりにidの参照をdbの行に追加してラッパーを作成し、必要に応じてフェッチすることができます。 – ThomasD

関連する問題