HOW TO:使用 Navigate 運算子巡覽關聯性 (EntityClient)
本主題提供的範例將說明如何藉由使用 EntityCommand 對 Entity Data Model 執行命令,以及如何藉由使用 EntityDataReader 擷取 RefType 結果。
若要執行這個範例中的程式碼
將 AdventureWorks Sales Model 加入至專案中,並將專案設定成使用 Entity Framework。若要這麼做,必須執行下列其中一項:
如果您已經安裝 Entity Data Model 工具,請完成 HOW TO:使用 Entity Data Model 精靈 (Entity Framework) 中的程序。
否則,請完成 HOW TO:手動設定 Entity Framework 專案和 HOW TO:以手動方式定義 Entity Data Model (Entity Framework) 中的程序。
在應用程式的字碼頁中加入下列 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;
範例
下列範例會示範如何使用 NAVIGATE (Entity SQL) 運算子巡覽 實體 SQL 中的關聯性。Navigate 運算子會使用以下參數:實體的執行個體、關聯性類型及關聯性的開頭和結尾。簡易版的 Navigate 運算子會使用實體的執行個體和關聯性類型。下列範例會示範如何使用簡易版的 Navigate 運算子。
Using connection As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
connection.Open()
Try
' Create an EntityCommand and pass the connection object
' and Entity SQL query to its constructor.
Using cmd As EntityCommand = connection.CreateCommand()
' Create an Entity SQL query.
Dim esqlQuery As String = "SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM " & _
"NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) " & _
"AS soh) FROM AdventureWorksEntities.Address AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using reader As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
Do While reader.Read
Console.WriteLine(reader.Item("AddressID"))
Loop
End Using
End Using
Catch ex As EntityException
Console.WriteLine(ex.ToString())
End Try
connection.Close()
End Using
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
try
{
// Create an EntityCommand.
using (EntityCommand cmd = conn.CreateCommand())
{
// Create an Entity SQL query.
string esqlQuery =
@"SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM
NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh) FROM AdventureWorksEntities.Address AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
另請參閱
概念
其他資源
使用 EntityClient (Entity Framework 工作)
How to: Execute an Entity SQL Query Using EntityCommand