作法:使用 Navigate 運算子巡覽關聯性
本主題顯示如何使用 EntityCommand 物件,針對概念模型執行命令,以及如何使用 RefType 擷取 EntityDataReader 結果。
執行此範例中的程式碼
將 AdventureWorks Sales Model 加入至專案中,並將專案設定成使用 Entity Framework。 如需詳細資訊,請參閱如何:使用實體資料模型精靈。
在應用程式的代碼頁中,新增下列
using
指示詞 (Imports
在 Visual Basic 中):using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.EntityClient; using System.Data.Metadata.Edm;
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
範例
下列範例示範如何使用 NAVIGATE 運算子來巡覽 Entity SQL 中的關聯性。 Navigate
運算子會使用下列參數:實體的執行個體、關聯性類型,以及關聯性的結尾和開頭。 您可以選擇性地只將實體的執行個體和關聯性類型傳遞至 Navigate
運算子。
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
// 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.Addresses AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
conn.Close();
}
Using conn As New EntityConnection("name=AdventureWorksEntities")
conn.Open()
' Create an EntityCommand.
Using cmd As EntityCommand = conn.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.Addresses AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
While rdr.Read()
Console.WriteLine(rdr("AddressID"))
End While
End Using
End Using
conn.Close()
End Using