通常、クエリの結果に基づいて行を取得します。クエリの結果には、行の一意の識別子が含まれている必要があります。
注意
次の例では、accountid
変数はアカウント行の Guid 識別子を表します。
行を取得するときに返されるデータを定義するためのいくつかのオプションがあります。 ColumnSet クラスを使用して、必要な列 (属性) 値を定義します。
重要
行を取得するときは、ColumnSet クラス コンストラクタを使用して特定の列を設定することにより、必要な列値のみを要求する必要があります。
ColumnSet クラス コンストラクターにはブーリアンの allColumns
パラメータを受け入れる負荷がありますが、運用コードでは使用しないでください。 詳細: クエリ API を使用してエンティティのすべての列を取得することはできません
関連する行を返す必要がある場合は、取得リクエストにクエリを含めて、返す関連する行を定義できます。
基本的な取得
IOrganizationService.Retrieve メソッドを使用するか、RetrieveRequest クラスの Target プロパティを参照行に設定して IOrganizationService.Execute メソッドを使用することで、個々の行を取得できます。
この例では、IOrganizationService.Retrieve メソッドを使用しています。
Entity entity = svc.Retrieve("account", accountid, new ColumnSet("name"));
Console.WriteLine("account name: {0}", entity["name"]);
この例では、RetrieveRequest クラスと RetrieveResponse クラスを IOrganizationService.Execute メソッドで使用する方法を示しています。
RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", accountid)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;
Console.WriteLine("account name: {0}", entity["name"]);
注意
ほとんどの場合、IOrganizationService.Retrieve メソッドを使用します。
以下の特別な状況では、IOrganizationService.Execute メソッドと組み合わせて RetrieveRequest を使用します。 詳細:
関連行で取得
個々の行を取得する際に、クエリを含めて、RetrieveRequest の RelatedEntitiesQueryプロパティを設定することで関連する行を含めることもできます。
QueryBase から派生したクラスのいずれかを使用してクエリを定義し、それを特定のテーブル行の関係に関連付けることができます。 RelationshipQueryCollection を使用して、RelatedEntitiesQuery プロパティにクエリと関連付けのペアのコレクションを追加します。
次の例には、取得されている account
に関連した task
行と contact
行が含まれます。
var relationshipQueryCollection = new RelationshipQueryCollection();
var relatedTasks = new QueryExpression("task");
relatedTasks.ColumnSet = new ColumnSet("subject", "description");
var taskRelationship = new Relationship("Account_Tasks");
relationshipQueryCollection.Add(taskRelationship, relatedTasks);
var relatedContacts = new QueryExpression("contact");
relatedContacts.ColumnSet = new ColumnSet("fullname", "emailaddress1");
var contactRelationship = new Relationship("account_primary_contact");
relationshipQueryCollection.Add(contactRelationship, relatedContacts);
var request = new RetrieveRequest()
{
ColumnSet = new ColumnSet(true),
RelatedEntitiesQuery = relationshipQueryCollection,
Target = new EntityReference("account", accountid)
};
RetrieveResponse response = (RetrieveResponse)svc.Execute(request);
Entity retrievedAccount = response.Entity;
Console.WriteLine("Account Name: {0}",retrievedAccount["name"]);
var tasks = retrievedAccount.RelatedEntities[new Relationship("Account_Tasks")];
Console.WriteLine("Tasks:");
tasks.Entities.ToList().ForEach(x => {
Console.WriteLine(" Task Subject: {0}",x["subject"]);
});
Entity primaryContact = retrievedAccount
.RelatedEntities[new Relationship("account_primary_contact")]
.Entities.FirstOrDefault();
Console.WriteLine("Primary Contact Fullname: {0}",primaryContact["fullname"]);
サンプルの結果は次のようになります。
Account Name: City Power & Light (sample)
Tasks:
Task Subject: Task 1
Task Subject: Task 2
Primary Contact Fullname: Scott Konersmann (sample)
代替キーで取得
テーブルを構成して代替キーを使用している場合は、この代替キーを使用して EntityReference を定義し、この値を RetrieveRequest.Target プロパティとして渡すことができます。
たとえば、account
accountnumber
列を定義して代替キーにすると、その列の値を使用してアカウントを取得できます。
RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", "accountnumber", "0001")
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;
Console.WriteLine(entity["name"]);
代替キーが複数の列 (属性) の複合である場合、KeyAttributeCollection を定義します。 次の例は、accountnumber
属性と sic
属性の両方を含む代替キーを持つアカウントの場合です。
var keyCollection = new KeyAttributeCollection();
keyCollection.Add("accountnumber", "0001");
keyCollection.Add("sic", "7372");
RetrieveRequest request = new RetrieveRequest()
{
ColumnSet = new ColumnSet("name"),
Target = new EntityReference("account", keyCollection)
};
var response = (RetrieveResponse)svc.Execute(request);
Entity entity = response.Entity;
Console.WriteLine(entity["name"]);
注意
代替キーは、通常、データ統合シナリオでのみ使用されます
エラスティック テーブルからレコードを取得する
パーティションに格納されているエラスティック テーブルデータを取得している場合は、そのデータを取得するときに必ずパーティション キーを指定してください。 詳細情報: エラスティック テーブルにレコードを取得する
書式設定された値にアクセスする
検索操作で書式設定された値にアクセスする方法は、クエリの結果でアクセスするときに使用する方法と同じです。 詳細: 書式設定された値にアクセスする
参照
.NET 用 SDK を使用したテーブル行の作成
SDK for .NET を使用したテーブル行の更新と削除
.NET 用 SDK を使用したテーブル行の関連付けと関連付け解除