4D v19dataClass.fromCollection( ) |
||||||||
|
4D v19
dataClass.fromCollection( )
|
プロパティ | 型 | 詳細 |
context | テキスト | エンティティセレクションに適用されている最適化コンテキストのラベル。エンティティセレクションを扱うコードはこのコンテキストを使うことで最適化の恩恵を受けることができます。この機能はORDA のクライアント/サーバー処理を想定して設計されています。詳細については、クライアント/サーバーの最適化 の章を参照ください。 |
既存のエンティティを更新したい場合を考えます。__NEW プロパティはなく、従業員のプライマリーキーは存在していて判明しています:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=668 //Employee テーブルの既存のプライマリーキー
$emp.firstName:="Arthur"
$emp.lastName:="Martin"
$emp.employer:=New object("ID";121) //リレートされたデータクラスCompany 内の既存のプライマリーキー
// この従業員については、リレートされたデータクラスCompanyの他の既存のプライマリーキーを使用することでCompany を変更することができます
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
既存のエンティティを更新したい場合を考えます。 __NEW プロパティは与えられてなく、employee プライマリーキーは __KEY 属性があり、存在しています:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.__KEY:=1720 //Employee テーブル内の既存のプライマリーキー
$emp.firstName:="John"
$emp.lastName:="Boorman"
$emp.employer:=New object("ID";121) //リレートされたデータクラスCompany内の既存のプライマリーキー
// この従業員に対しては、リレートされたデータクラスCompany 内の他の既存のプライマリーキーを使用することで会社を変更することができます
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
シンプルにコレクションから新しいエンティティを作成したい場合を考えます:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.firstName:="Victor"
$emp.lastName:="Hugo"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
エンティティを作成したい場合を考えます。__NEW プロパティはTrue であり、employee のプライマリーキーは不明だとします:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.firstName:="Mary"
$emp.lastName:="Smith"
$emp.employer:=New object("__KEY";121) //リレートされたデータクラスCompamy 内の既存のプライマリーキー
$emp.__NEW:=True
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
エンティティを作成したい場合を考えます。__NEW プロパティは省略されていて、employee プライマリーキーは判明していますが、存在はしません:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10000 //存在しないプライマリーキー
$emp.firstName:="Françoise"
$emp.lastName:="Sagan"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
この例題では、最初のエンティティは問題なく作成されて保存されますが、2つめのエンティティは最初のと同じプライマリーキーを使用しているため失敗します:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$emp2;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10001 // 存在しないプライマリーキー
$emp.firstName:="Simone"
$emp.lastName:="Martin"
$emp.__NEW:=True
$empsCollection.push($emp)
$emp2:=New object
$emp2.ID:=10001 // 同じプライマリーキー、既に存在している
$emp2.firstName:="Marc"
$emp2.lastName:="Smith"
$emp2.__NEW:=True
$empsCollection.push($emp2)
$employees:=ds.Employee.fromCollection($empsCollection)
//最初のエンティティは作成されます
//2つめのエンティティは重複キーエラーになります
プロダクト: 4D
テーマ: ORDA - データクラス
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)