エンティティ型を返すクエリの実行方法 (Entity Framework)

このトピックでは、例を挙げて、エンティティ型のインスタンスのコレクションを返す Entity SQL クエリの実行方法を説明します。この例では、その後で製品のコレクションを反復処理し、各製品の名前と ID を表示します。次の各 エンティティ フレームワーク クエリ テクノロジを使って同じことを行う例が紹介されています。

  • LINQ to Entities

  • Entity SQL と ObjectQuery<T>

  • ObjectQuery<T> のクエリ ビルダ メソッド

このトピックの例には、Adventure Works Sales Model が使用されています。この例のコードを実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、Entity Framework が使用されるようにプロジェクトを構成しておく必要があります。具体的な方法については、「Entity Framework プロジェクトを手動で構成する方法」および「Entity Data Model を手動で定義する方法 (Entity Framework)」の手順を参照してください。Entity Data Model ウィザードを使用して、AdventureWorks Sales Model を定義することもできます。詳細については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」を参照してください。

以下は LINQ to Entities の例です。

Using AWEntities As New AdventureWorksEntities
    Dim products As ObjectQuery(Of Product) = AWEntities.Product

    Dim productsQuery = _
        From product In products _
        Select product

    Console.WriteLine("Product Names:")
    For Each product In productsQuery
        Console.WriteLine(product.Name)
    Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<Product> products = AWEntities.Product;
    IQueryable<Product> productsQuery = from product in products
                                        select product;

    Console.WriteLine("Product Names:");
    foreach (var prod in productsQuery)
    {
        Console.WriteLine(prod.Name);
    }
}

以下は Entity SQL の例です。

Using advWorksContext As AdventureWorksEntities = New AdventureWorksEntities
    Try
        Dim queryString As String = "SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product"

        Dim query As New ObjectQuery(Of Product)(queryString, advWorksContext, MergeOption.NoTracking)

        ' Iterate through the collection of Product items.
        For Each result As Product In query
            Console.WriteLine("Product Name: {0} Product ID: {1}", _
            result.Name, result.ProductID)
        Next

    Catch exception As EntityException
        Console.WriteLine(exception.ToString)
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        string queryString =
            @"SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product";

        ObjectQuery<Product> productQuery =
            new ObjectQuery<Product>(queryString, advWorksContext, MergeOption.NoTracking);

        // Iterate through the collection of Product items.
        foreach (Product result in productQuery)
            Console.WriteLine("Product Name: {0}; Product ID: {1}",
                result.Name, result.ProductID);
    }
    catch (EntityException ex)
    {
        Console.WriteLine(ex.ToString());
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

以下は、クエリ ビルダ メソッドの例です。

Using advWorksContext As AdventureWorksEntities = _
    New AdventureWorksEntities
    Try
        Dim query As ObjectQuery(Of Product) = _
            advWorksContext.Product

        ' Iterate through the collection of Product items.
        For Each result As Product In query
            Console.WriteLine("Product Name:{0}Product ID: {1}", _
            result.Name, result.ProductID)
        Next

    Catch exception As EntitySqlException
        Console.WriteLine(exception.ToString)
    End Try
End Using
using (AdventureWorksEntities advWorksContext =
    new AdventureWorksEntities())
{
    try
    {
        ObjectQuery<Product> productQuery = advWorksContext.Product;

        // Iterate through the collection of Product items.
        foreach (Product result in productQuery)
            Console.WriteLine("Product Name: {0}; Product ID: {1}",
                result.Name, result.ProductID);
    }
    catch (EntitySqlException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

参照

処理手順

匿名型を返すクエリの実行方法 (Entity Framework)
プリミティブ型を返すクエリの実行方法 (Entity Framework)
パラメータ化クエリを実行する方法 (Entity Framework)

その他のリソース

Entity Data Model のクエリ (Entity Framework タスク)