QueryableExtensions.Include<T, TProperty> メソッド (IQueryable<T>, Expression<Func<T, TProperty>>)
[このページは、Entity Framework 6 に関するページです。最新バージョンは、'Entity Framework' NuGet パッケージとして入手できます。Entity Framework の詳細については、msdn.com/data/ef を参照してください。]
クエリ結果に含める関連オブジェクトを指定します。
名前空間: System.Data.Entity
アセンブリ: EntityFramework (EntityFramework.dll 内)
構文
'宣言
<SuppressMessageAttribute("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")> _
<SuppressMessageAttribute("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")> _
<ExtensionAttribute> _
Public Shared Function Include(Of T, TProperty) ( _
source As IQueryable(Of T), _
path As Expression(Of Func(Of T, TProperty)) _
) As IQueryable(Of T)
'使用
Dim source As IQueryable(Of T)
Dim path As Expression(Of Func(Of T, TProperty))
Dim returnValue As IQueryable(Of T)
returnValue = source.Include(path)
[SuppressMessageAttribute("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")]
[SuppressMessageAttribute("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")]
public static IQueryable<T> Include<T, TProperty>(
this IQueryable<T> source,
Expression<Func<T, TProperty>> path
)
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1006:DoNotNestGenericTypesInMemberSignatures")]
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1011:ConsiderPassingBaseTypesAsParameters")]
[ExtensionAttribute]
public:
generic<typename T, typename TProperty>
static IQueryable<T>^ Include(
IQueryable<T>^ source,
Expression<Func<T, TProperty>^>^ path
)
[<SuppressMessageAttribute("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures")>]
[<SuppressMessageAttribute("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")>]
static member Include :
source:IQueryable<'T> *
path:Expression<Func<'T, 'TProperty>> -> IQueryable<'T>
JScript does not support generic types and methods.
型パラメーター
- T
照会するエンティティの型。
- TProperty
含めるナビゲーション プロパティの型。
パラメーター
- source
型 : System.Linq.IQueryable<T>
Include を呼び出す対象のソース IQueryable。
- path
型 : System.Linq.Expressions.Expression<Func<T, TProperty>>
含めるパスを表すラムダ式。
戻り値
型 : System.Linq.IQueryable<T>
定義されたクエリ パスを含む新しい IQueryable<T>。
使用上の注意
Visual Basic および Visual C# では、このメソッドを、IQueryable<T> 型のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。詳細については、「https://msdn.microsoft.com/ja-jp/library/bb384936(v=vs.113)」または「https://msdn.microsoft.com/ja-jp/library/bb383977(v=vs.113)」を参照してください。
解説
コレクション プロパティを含めた後、追加の要素を含めることができるように、単純なプロパティ アクセス式と Select への呼び出しでパス式を構成する必要があります。 考えられるインクルード パスの例を次に示します。1 つの参照を含めるには:query.Include(e =&gt; e.Level1Reference) 1 つのコレクションを含めるには:query.Include(e =&gt; e.Level1Collection) 1 つの参照を含め、参照レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Reference.Level2Reference) 1 つの参照を含め、コレクション レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Reference.Level2Collection) 1 つのコレクションを含め、参照レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Reference)) 1 つのコレクションを含め、コレクション レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Collection)) 1 つのコレクションを含め、参照レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Reference)) 1 つのコレクションを含め、コレクション レベルを 1 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Collection)) 1 つのコレクションを含め、1 つの参照を含めて、参照レベルを 2 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Reference.Level3Reference)) 1 つのコレクションを含め、1 つのコレクションを含めて、参照レベルを 2 つ下げるには:query.Include(e =&gt; e.Level1Collection.Select(l1 =&gt; l1.Level2Collection.Select(l2 =&gt; l2.Level3Reference))) この拡張メソッドはソース IQueryable オブジェクトの Include(String) メソッド (存在する場合) を呼び出します。 ソース IQueryable に一致するメソッドが存在しない場合、このメソッドは何も行いません。 Entity Framework の ObjectQuery、ObjectSet、DbQuery、および DbSet 型のすべてで、適切な Include メソッドを呼び出す必要があります。 Include メソッドを呼び出した場合、クエリ パスは、IQueryable&lt;T&gt; の返されたインスタンスでのみ有効です。 IQueryable&lt;T&gt; の他のインスタンスとオブジェクト コンテキスト自体は影響を受けません。 Include メソッドはクエリ オブジェクトを返すので、このメソッドを IQueryable&lt;T&gt; で複数回呼び出すことで、クエリに複数のパスを指定できます。