InsertEntity 要求を使用して、新しい関連エンティティーが含まれている可能性がある新しい eXtreme Scale エンティティー・インスタンスを eXtreme Scale REST データ・サービスに挿入できます。
InsertEntity 要求を使用して、新しい関連エンティティーが含まれている可能性がある新しい eXtreme Scale エンティティー・インスタンスを eXtreme Scale REST データ・サービスに挿入できます。エンティティーの挿入時に、クライアントは、リソースまたはエンティティーをデータ・サービス内の既存の他のエンティティーに自動的にリンクする必要があるかどうかを指定できます。
クライアントは、関連した関係の表現で、必要なバインディング情報を要求ペイロードに含める必要があります。
新しい EntityType インスタンス (E1) の挿入のサポートに加えて、 InsertEntity 要求によって、(エンティティー関係で記述された) E1 に関連した新しいエンティティーを単一の要求で挿入することもできます。 例えば、Customer('IBM') を挿入する際に、Customer('IBM') に関するすべての Order を挿入できます。 この形式の InsertEntity 要求は、ディープ挿入 とも呼ばれます。ディープ挿入の場合、関連したエンティティーは、挿入する関連したエンティティーへのリンクを識別する、E1 に関連した関係のインライン表現を使用して表す必要があります。
挿入するエンティティーのプロパティーは、要求ペイロードで指定されます。 プロパティーは、REST データ・サービスで構文解析されてから、エンティティー・インスタンスの対応するプロパティーに設定されます。 AtomPub フォーマットの場合、プロパティーは <d:PROPERTY_NAME> XML エレメントとして指定されます。 JSON の場合、プロパティーは JSON オブジェクトのプロパティーとして指定されます。
要求ペイロード内にプロパティーが存在しない場合には、 REST データ・サービスは、エンティティー・プロパティー値を Java のデフォルト値に設定します。 ただし、データベース・バックエンドは、例えばデータベース内で列がヌル可能ではない場合などに、そのようなデフォルト値を拒否する可能性があります。 その場合、500 応答コードが返されて、Internal Server Error が示されます。
ペイロード内に重複プロパティーが指定されている場合には、最後のプロパティーが使用されます。 同じプロパティー名のそれより前のすべての値は、REST データ・サービスによって無視されます。
存在しないプロパティーがペイロードに含まれている場合には、 REST データ・サービスは 400 (Bad Request) 応答コードを返し、クライアントによって送信された要求の構文が正しくないことが示されます。
キー・プロパティーが存在しない場合には、 REST データ・サービスは 400 (Bad Request) 応答コードを返し、存在しないキー・プロパティーが示されます。
存在しないキーが含まれた関連エンティティーへのリンクがペイロードに含まれている場合には、 REST データ・サービスは 404 (Not Found) 応答コードを返し、リンクされたエンティティーが見つからないことが示されます。
アソシエーション名が正しくない関連エンティティーへのリンクがペイロードに含まれている場合には、 REST データ・サービスは 400 (Bad Request) 応答コードを返して、リンクが見つからないことが示されます。
対 1 関係への複数のリンクがペイロードに含まれている場合には、 最後のリンクが使用されます。 同じアソシエーションのそれより前のすべてのリンクは無視されます。
InsertEntity 要求の詳細については、MSDN Library: InsertEntity Request を参照してください。
InsertEntity 要求は、キー「IBM」の Customer エンティティーを挿入します。
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<category term="NorthwindGridModel.Customer"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:customerId>Rational</d:customerId>
<d:city>Rochester</d:city>
<d:companyName>Rational</d:companyName>
<d:contactName>John Doe</d:contactName>
<d:country>USA</d:country>
</m:properties>
</content>
</entry>
<?xml version="1.0" encoding="ISO-8859-1"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<category term="NorthwindGridModel.Customer"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:customerId>Rational</d:customerId>
<d:city>Rochester</d:city>
<d:companyName>Rational</d:companyName>
<d:contactName>John Doe</d:contactName>
<d:country>USA</d:country>
</m:properties>
</content>
</entry>
応答ヘッダー:
Content-Type: application/atom+xml
応答ペイロード:
<?xml version="1.0" encoding="utf-8"?>
<entry xml:base = "http://localhost:8080/wxsrestservice/restservice" xmlns:d =
"http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m =
"http://schemas.microsoft.com/
ado/2007/08/dataservices/metadata" xmlns = "http://www.w3.org/2005/Atom">
<category term = "NorthwindGridModel.Customer" scheme = "http://schemas.
microsoft.com/ado/2007/08/dataservices/scheme"/>
<id>http://localhost:8080/wxsrestservice/restservice/NorthwindGrid/
Customer('Rational')</id>
<title type = "text"/>
<updated>2009-12-16T23:25:50.875Z</updated>
<author>
<name/>
</author>
<link rel = "edit" title = "Customer" href = "Customer('Rational')"/>
<link rel = "http://schemas.microsoft.com/ado/2007/08/dataservices/related/
orders" type = "application/atom+xml;type=feed"
title = "orders" href = "Customer('Rational')/orders"/>
<content type = "application/xml">
<m:properties>
<d:customerId>Rational</d:customerId>
<d:city>Rochester</d:city>
<d:companyName>Rational</d:companyName>
<d:contactName>John Doe</d:contactName>
<d:country>USA</d:country>
<d:version m:type = "Edm.Int32">0</d:version>
</m:properties>
</content>
</entry>
JSON
{"customerId":"Rational",
"city":null,
"companyName":"Rational",
"contactName":"John Doe",
"country": "USA",}
{"d":{"__metadata":{"uri":"http://localhost:8080/wxsrestservice/restservice/
NorthwindGrid/Customer('Rational')",
"type":"NorthwindGridModel.Customer"},
"customerId":"Rational",
"city":null,
"companyName":"Rational",
"contactName":"John Doe",
"country":"USA",
"version":0,
"orders":{"__deferred":{"uri":"http://localhost:8080/wxsrestservice/restservice/
NorthwindGrid/Customer('Rational')/orders"}}}}
InsertLink 要求を使用して、2 つの eXtreme Scale エンティティー・インスタンス間に新しいリンクを作成できます。要求の URI は、eXtreme Scale の対多アソシエーションに解決される必要があります。要求のペイロードには、対多アソシエーション・ターゲット・エンティティーを指す単一のリンクが含まれます。
InsertLink 要求の URI が対 1 アソシエーションを表す場合には、 REST データ・サービスは 400 (Bad request) 応答を返します。
InsertLink 要求の URI が、存在しないアソシエーションを指す場合には、 REST データ・サービスは 404 (Not Found) 応答を返し、リンクが見つからないことが示されます。
存在しないキーが存在するリンクがペイロードに含まれている場合には、 REST データ・サービスは 404 (Not Found) 応答を返し、リンクされたエンティティーが見つからないことが示されます。
ペイロードに複数のリンクが含まれている場合には、eXtreme Scale REST データ・サービスは最初のリンクを構文解析します。残りのリンクは無視されます。
InsertLink 要求の詳細については、MSDN Library: InsertLink Request を参照してください。
以下の InsertLink 要求の例では、Customer('IBM') から Order(orderId=5000,customer_customerId='IBM') へのリンクを作成します。
AtomPub
<?xml version="1.0" encoding="ISO-8859-1"?>
<uri>http://host:1000/wxsrestservice/restservice/NorthwindGrid/Order(orderId=
5000,customer_customerId='IBM')</uri>
JSON
{"uri": "http://host:1000/wxsrestservice/restservice/NorthwindGrid/Order(orderId
=5000,customer_customerId='IBM')"}