2011-02-09 9 views
0

次の特定の場合や一般的にasp.net mvc 2アクションの実行中にデータベースへの往復回数を減らすことはできますか? 私はlinq-to-sqlを使用しています。 次のコードの結果は、データベースに60回の往復を要する60回の選択となります。どのようにして往復回数を減らすことができますか?往復回数を減らす - linq-to-sql

私のコードがさらに必要な場合は、投稿します。

マイビューモデル:

public class ArticlesContainerViewModel 
{ 
    public ArticlesContainerViewModel() 
    { 
    } 

    public Article CategoryArticle { get; set; } 

    public IList<ArticlesNode> CategoryNodes { get; set; } 
} 

public class ArticlesNode 
{ 
    public Article NodeArticle { get; set; } 

    public IQueryable<Article> NodeItems { get; set; } 
} 

ビュー:あなたは私に尋ねると、私はModelのタイプがタイプIList<ArticlesContainerViewModel>かであることを推測する場合

<ul class="tabs"> 
     <% foreach (var category in Model) 
      { %> 
     <li><a href="#" class="s"> 
      <%= Html.Encode(category.CategoryArticle.AbbreviatedTitle) %></a></li> 
     <% } %> 
    </ul> 
    <!-- tab "panes" --> 
    <div class="panes"> 
     <% foreach (var category in Model) 
      { 
     %> 
     <div> 
      <table style="width: 100%;" cellpadding="0" cellspacing="0"> 
       <% int counter = 0; foreach (var node in category.CategoryNodes) 
        { 
       %> 
       <%if (counter % 2 == 0) 
        { %> 
       <tr> 
        <%} %> 
        <td class="content-container"> 
         <div class="index-node-title"> 
          <%= Html.Encode(node.NodeArticle.ArticleTitle)%>&nbsp;<span class="small1 darkGrey2">(<%= Html.Encode(node.NodeItems.Count().ToString())%>)</span> 
         </div> 
         <div class="index-node-content"> 
          <ul class="index-node-content-list"> 
           <% foreach (var item in node.NodeItems.Take(2)) 

答えて

1

コードは少し厄介です似たような。あなたの問題は、IQueryableこの "高い"アプリケーションで使用しているということです。私は行くだろうな構造は次のとおりです。

1. First select all categories and put that in your `ViewModel` using a single query. 
2. From all your categories select all your articles or what else from the db in a single query, put the result in a dictionary where category is the key. 

その方法は、あなたが今持っているとしてだけで2つのクエリの代わりm*(n+1)を得ることができる必要があります。

+0

ありがとう、それを試してみましょう、物事を行うより効率的な方法のように思える... – user560498

+0

+1よく@トーマス –

関連する問題