2016-06-27 5 views
0

私はこのコードを私のdalに持っています。C#Linq return子要素も

public List<BDO_Enquiry> GetEnquiryList() 
    { 
     List<BDO_Enquiry> retList = new List<BDO_Enquiry>(); 

     try 
     { 
      using (var context = new BDODevelopmentEntities()) 
      { 
       try 
       { 
        retList = context.BDO_Enquiry.ToList(); 
       } 
       catch (Exception ex) { string g = ""; } 
      } 
     } catch(Exception ex) { string h = ""; } 

     return retList; 
    } 

しかし、私がビジネスロジックに戻ったとき、レットリストのすべての子はロードされません。

私は従業員オブジェクトを持っており、その中に雇用者オブジェクトがあります。

従業員オブジェクトは返されますが、雇用主子オブジェクトは返されません。私がそれらにアクセスしようとすると、私はもちろんSystem.ObjectDisposedExceptionエラーを受け取ります。

私はどのようにクエリを実行し、すべての子どもを戻すことができますか?

+1

おそらく、EntityFrameworkでLazy、Eager、またはExplicitの読み込みを調べる必要があります。 –

答えて

1

てみてください...

public List<BDO_Enquiry> GetEnquiryList() 
{ 
    List<BDO_Enquiry> retList = new List<BDO_Enquiry>(); 

    try 
    { 
     using (var context = new BDODevelopmentEntities()) 
     { 
      try 
      { 
       var query = context.BDO_Enquiry.Include("Child"); 
       query = query.Include("AnotherChild"); 
       retList = query.ToList(); 
      } 
      catch (Exception ex) { string g = ""; } 
     } 
    } catch(Exception ex) { string h = ""; } 

    return retList; 
} 

これは、1つのクエリの一部として子どもとAnotherChildをロードします。 usingステートメント内のエンティティのナビゲーションプロパティにアクセスしようとすると、ナビゲーションプロパティをロードするSQL要求が実行され、必要に応じてナビゲーションプロパティがロードされることがわかります。 usingステートメントを終了すると、コンテキストは終了し、ナビゲーションプロパティは必要に応じてロードされなくなります。