DataServiceContext.LoadProperty メソッド (Object, String, Uri)
関連エンティティのページを、指定された次のリンク URI を使用して読み込みます。
Silverlight の WCF Data Services 5.0 クライアントではサポートされていません。
名前空間: System.Data.Services.Client
アセンブリ: Microsoft.Data.Services.Client (Microsoft.Data.Services.Client.dll)
構文
'宣言
Public Function LoadProperty ( _
entity As Object, _
propertyName As String, _
nextLinkUri As Uri _
) As QueryOperationResponse
'使用
Dim instance As DataServiceContext
Dim entity As Object
Dim propertyName As String
Dim nextLinkUri As Uri
Dim returnValue As QueryOperationResponse
returnValue = instance.LoadProperty(entity, _
propertyName, nextLinkUri)
public QueryOperationResponse LoadProperty(
Object entity,
string propertyName,
Uri nextLinkUri
)
public:
QueryOperationResponse^ LoadProperty(
Object^ entity,
String^ propertyName,
Uri^ nextLinkUri
)
member LoadProperty :
entity:Object *
propertyName:string *
nextLinkUri:Uri -> QueryOperationResponse
public function LoadProperty(
entity : Object,
propertyName : String,
nextLinkUri : Uri
) : QueryOperationResponse
パラメーター
- entity
型: System.Object
読み込むプロパティを含むエンティティ。
- propertyName
型: System.String
読み込みに指定されたエンティティのプロパティの名前。
- nextLinkUri
型: System.Uri
次の結果ページを読み込むために使用する URI。
戻り値
型: System.Data.Services.Client.QueryOperationResponse
要求の結果が格納されている QueryOperationResponse<T> のインスタンス。
例外
例外 | 条件 |
---|---|
InvalidOperationException |
説明
entity の状態が Unchanged または Modified の場合、関連エンティティは Unchanged 状態で読み込まれ、エンティティ間のリンクも Unchanged 状態で作成されます。
entity の状態が Deleted の場合、関連エンティティは Unchanged 状態で読み込まれ、エンティティ間のリンクは Deleted 状態で作成されます。
使用例
次の例は、関連する Orders エンティティと各 Customers エンティティを返し、do...while ループを使用して Customers エンティティ ページおよび入れ子になった while ループを読み込んで、データ サービスから関連する Orders エンティティのページを読み込みます。 LoadProperty メソッドは、関連する Orders エンティティのページを読み込むために使用されます。
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Dim nextLink As DataServiceQueryContinuation(Of Customer) = Nothing
Dim pageCount = 0
Dim innerPageCount = 0
Try
' Execute the query for all customers and related orders,
' and get the response object.
Dim response = _
CType(context.Customers.AddQueryOption("$expand", "Orders") _
.Execute(), QueryOperationResponse(Of Customer))
' With a paged response from the service, use a do...while loop
' to enumerate the results before getting the next link.
Do
' Write the page number.
Console.WriteLine("Customers Page {0}:", ++pageCount)
' If nextLink is not null, then there is a new page to load.
If nextLink IsNot Nothing Then
' Load the new page from the next link URI.
response = CType(context.Execute(Of Customer)(nextLink), _
QueryOperationResponse(Of Customer))
End If
' Enumerate the customers in the response.
For Each c As Customer In response
Console.WriteLine(vbTab & "Customer Name: {0}", c.CompanyName)
Console.WriteLine(vbTab & "Orders Page {0}:", innerPageCount + 1)
' Get the next link for the collection of related Orders.
Dim nextOrdersLink As DataServiceQueryContinuation(Of Order) = _
response.GetContinuation(c.Orders)
While nextOrdersLink IsNot Nothing
For Each o As Order In c.Orders
' Print out the orders.
Console.WriteLine(vbTab & vbTab & "OrderID: {0} - Freight: ${1}", _
o.OrderID, o.Freight)
Next
' Load the next page of Orders.
Dim ordersResponse = _
context.LoadProperty(c, "Orders", nextOrdersLink)
nextOrdersLink = ordersResponse.GetContinuation()
End While
Next
' Get the next link, and continue while there is a next link.
nextLink = response.GetContinuation()
Loop While nextLink IsNot Nothing
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
DataServiceQueryContinuation<Customer> nextLink = null;
int pageCount = 0;
int innerPageCount = 0;
try
{
// Execute the query for all customers and related orders,
// and get the response object.
var response =
context.Customers.AddQueryOption("$expand", "Orders")
.Execute() as QueryOperationResponse<Customer>;
// With a paged response from the service, use a do...while loop
// to enumerate the results before getting the next link.
do
{
// Write the page number.
Console.WriteLine("Customers Page {0}:", ++pageCount);
// If nextLink is not null, then there is a new page to load.
if (nextLink != null)
{
// Load the new page from the next link URI.
response = context.Execute<Customer>(nextLink)
as QueryOperationResponse<Customer>;
}
// Enumerate the customers in the response.
foreach (Customer c in response)
{
Console.WriteLine("\tCustomer Name: {0}", c.CompanyName);
Console.WriteLine("\tOrders Page {0}:", ++innerPageCount);
// Get the next link for the collection of related Orders.
DataServiceQueryContinuation<Order> nextOrdersLink =
response.GetContinuation(c.Orders);
while (nextOrdersLink != null)
{
foreach (Order o in c.Orders)
{
// Print out the orders.
Console.WriteLine("\t\tOrderID: {0} - Freight: ${1}",
o.OrderID, o.Freight);
}
// Load the next page of Orders.
var ordersResponse = context.LoadProperty(c, "Orders", nextOrdersLink);
nextOrdersLink = ordersResponse.GetContinuation();
}
}
}
// Get the next link, and continue while there is a next link.
while ((nextLink = response.GetContinuation()) != null);
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
関連項目
参照
System.Data.Services.Client 名前空間