SDK for .NET を使用してテーブルの行を取得する

通常、クエリの結果に基づいて行を取得します。クエリの結果には、行の一意の識別子が含まれている必要があります。

注意

次の例では、accountid 変数はアカウント行の Guid 識別子を表します。

行を取得するときに返されるデータを定義するためのいくつかのオプションがあります。 ColumnSet クラスを使用して、必要な列 (属性) 値を定義します。

重要

行を取得するときは、ColumnSet クラス コンストラクタを使用して特定の列を設定することにより、必要な列値のみを要求する必要があります。 ColumnSet クラス コンストラクターにはブーリアンの allColumns パラメータを受け入れる負荷がありますが、運用コードでは使用しないでください。 詳細: クエリ API を使用してエンティティのすべての列を取得することはできません

関連する行を返す必要がある場合は、取得リクエストにクエリを含めて、返す関連する行を定義できます。

基本的な取得

次のいずれかを使用して、個々の行を取得できます: IOrganizationServiceRetrieve メソッドまたは 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 メソッドを使用します。 メソッド。

以下で説明するように、特別な状況の場合は、RetrieveRequestIOrganizationService.Execute メソッド で使用します。 詳細:

個々の行を取得するときに、クエリを含めて、RetrieveRequestRelatedEntitiesQueryプロパティを設定することで関連する行を含めることもできます。

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)

詳細: .NET 用 SDK を使用するクエリ データ

代替キーで取得

代替キーを使用するようにテーブルを構成した場合は、この代替キーを使用して 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 を使用したテーブル行の関連付けと関連付け解除

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。