本主题提供一个示例,该示例演示如何使用 EntityCommand 对实体数据模型 (EDM) 执行命令,以及如何使用 EntityDataReader 检索 PrimitiveType 结果。
运行本示例中的代码
- 将 AdventureWorks 销售模型添加到项目并将项目配置为使用实体框架。为此,请执行下列操作之一: - 如果已安装实体数据模型工具,则完成如何:使用实体数据模型向导(实体框架) 中的过程。 
- 否则,请完成如何:手动配置实体框架项目和如何:手动定义实体数据模型(实体框架) 中的过程。 
 
- 在应用程序的代码页中,添加以下 using 语句(在 Visual Basic 中为 Imports): - Imports System Imports System.Collections.Generic Imports System.Collections Imports System.Data.Common Imports System.Data Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm Imports System.IO ' Add AdventureWorksModel prepended with the root namespace for the project. 'Imports ProjectName.AdventureWorksModel- 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 AdventureWorksModel; using System.Data.Metadata.Edm;
示例
若要测试此代码,请将以下查询作为参数传递给 ExecutePrimitiveTypeQuery 函数:
"SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Product as p"  
上面的查询返回 PrimitiveType 结果。
Sub ExecutePrimitiveTypeQuery(ByVal esqlQuery As String)
    If (esqlQuery.Length = 0) Then
        Console.WriteLine("The query string is empty.")
        Return
    End If
    Using conn As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
        conn.Open()
        Try
            ' Create an EntityCommand.
            Using cmd As EntityCommand = conn.CreateCommand()
                cmd.CommandText = esqlQuery
                ' Execute the command.
                Using reader As EntityDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
                    Do While (reader.Read())
                        Dim record As IExtendedDataRecord = CType(reader, IExtendedDataRecord)
                        ' For PrimitiveType 
                        ' the record contains exactly one field.
                        Dim fieldIndex As Integer
                        fieldIndex = 0
                        Console.WriteLine("Value: " + record.GetValue(fieldIndex))
                    Loop
                End Using
            End Using
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
        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();
        try
        {
            // 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));
                    }
                }
            }
        }
        catch (EntityException ex)
        {
            Console.WriteLine(ex.ToString());
        }
        conn.Close();
    }
}