Поделиться через


Как выполнить запрос, возвращающий результаты типов-примитивов (EntityClient)

В этом подразделе показано выполнение команды для концептуальной модели с помощью объекта EntityCommand, а также получение результатов PrimitiveType с помощью EntityDataReader.

Выполнение кода в этом примере

  1. Добавьте Модель AdventureWorks Sales к проекту и настройте проект на использование Entity Framework . Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

  2. На странице кода приложения добавьте следующие инструкции using (Imports в Visual Basic):

    Imports System
    Imports System.Collections.Generic
    Imports System.Collections
    Imports System.Data.Common
    Imports System.Data
    Imports System.IO
    Imports System.Data.SqlClient
    Imports System.Data.EntityClient
    Imports System.Data.Metadata.Edm
    
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Data.Common;
    using System.Data;
    using System.IO;
    using System.Data.SqlClient;
    using System.Data.EntityClient;
    using System.Data.Metadata.Edm;
    

Пример

В этом примере выполняется запрос, который возвращает результат PrimitiveType. Если следующий запрос передан в качестве аргумента функции ExecutePrimitiveTypeQuery, то будет выведен список средних цен для всех Products:

SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Передавая параметризованный запрос, подобный следующему, добавьте объекты EntityParameter к свойству Parameters объекта EntityCommand.

CASE WHEN AVG({@score1,@score2,@score3}) < @total THEN TRUE ELSE FALSE END
Private Shared Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
    If esqlQuery.Length = 0 Then
        Console.WriteLine("The query string is empty.")
        Exit Sub
    End If

    Using conn As New EntityConnection("name=AdventureWorksEntities")
        conn.Open()

        ' Create an EntityCommand. 
        Using cmd As EntityCommand = conn.CreateCommand()
            cmd.CommandText = esqlQuery
            ' Execute the command. 
            Using rdr As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
                ' Start reading results. 
                While rdr.Read()
                    Dim record As IExtendedDataRecord = TryCast(rdr, IExtendedDataRecord)
                    ' For PrimitiveType 
                    ' the record contains exactly one field. 
                    Dim fieldIndex As Integer = 0
                    Console.WriteLine("Value: " & record.GetValue(fieldIndex))
                End While
            End Using
        End Using
        conn.Close()
    End Using
End Sub
static void ExecutePrimitiveTypeQuery(string esqlQuery)
{
    if (esqlQuery.Length == 0)
    {
        Console.WriteLine("The query string is empty.");
        return;
    }

    using (EntityConnection conn =
        new EntityConnection("name=AdventureWorksEntities"))
    {
        conn.Open();

        // Create an EntityCommand.
        using (EntityCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = esqlQuery;
            // Execute the command.
            using (EntityDataReader rdr =
                cmd.ExecuteReader(CommandBehavior.SequentialAccess))
            {
                // Start reading results.
                while (rdr.Read())
                {
                    IExtendedDataRecord record = rdr as IExtendedDataRecord;
                    // For PrimitiveType 
                    // the record contains exactly one field.
                    int fieldIndex = 0;
                    Console.WriteLine("Value: " + record.GetValue(fieldIndex));
                }
            }
        }
        conn.Close();
    }
}

См. также

Основные понятия

Справочник по Entity SQL
Поставщик EntityClient для платформы Entity Framework