2011-01-21 6 views
0

LINQのためにループを変換する - など、私は余分なオーバーヘッドなしに自分のアプリケーションの周りに渡すことができるモデルにエンティティオブジェクトを変換する(同様にビューのために余分なフィールドのカップルを生成てるモデル作成

 public IEnumerable<PageModel> GetAllPages() 
     { 
      var AllPageO = _session.All<Page>(); 

      IList<PageModel> RetO = new List<PageModel>(); 

      foreach (var AP in AllPageO) 
      { 
       RetO.Add(new PageModel(AP)); 
      } 

      return RetO.AsEnumerable(); 
     } 

は、これは以下の私が「/」アプリケーションでエラー

サーバーエラーを取得する作業を行い、LINQのクエリに変換すること。だけ パラメータなしのコンストラクタと 初期化子が エンティティへのLINQでサポートされていることができます。

public IEnumerable<PageModel> GetAllPages() 
    { 
     var AllPageO = _session.All<Page>(); 

     var RetO = from EntityO in AllPageO select new PageModel(EntityO); 

     return RetO; 
    } 

Resharperのは、実際には、同じエラーで失敗し、この中にfirtループを変換します。

IList<PageModel> RetO = PageO.Select(AP => new PageModel(AP)).ToList(); 

答えて

3

これは、エンティティ・フレームワークが投影式をsqlに最適化しようとしているためです。

簡単に修正が投影する前に結果を列挙することです:

var RetO = from EntityO in AllPageO.ToList() select new PageModel(EntityO); 
+0

グレートは、私はこれを知っていました。それはどういうわけか私の心から滑った。乾杯。 – LiamB

関連する問題