Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
dataClass.fromCollection( )
|
dataClass.fromCollection ( colObj {; settings} ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
colObj | Collection |
![]() |
Coleção de objetos a ser mapeado com entidades | |||||
settings | Objeto |
![]() |
Opção de construção: contexto | |||||
Resultado | EntitySelection |
![]() |
Seleção de entidades preenchida a partir da coleção | |||||
O método dataClass.fromCollection( ) atualiza ou cria entidades na classe de dados de acordo com a coleção de objetos colObj, e retorna a seleção de entidades correspondente.
No parâmetro colObj, passe uma coleção de objetos para criar novas entidades ou atualizar entidades existentes na classe de dados. Os nomes das propriedades devem ser os mesmos que os nomes de atributos na classe de dados. Se um nome de propriedade não existir na classe de dados, é ignorado. Se um valor de atributo não for definido na coleção, seu valor será null.
O mapeamento entre os objetos da coleção e as entidades é feito nos nomes de atributo e correspondência de tipos (matching types). Se uma propriedade de objeto tiver o mesmo nome que um atributo de entidade, mas seus tipos não forem correspondentes, o atributo de entidade não é preenchido.
Modo Criar ou atualizar
Para cada objeto de colObj:
Entidades Relacionadas
Os objetos de colObj podem conter um ou mais objetos aninhados descrevendo uma ou mais entidades relacionadas, que podem ser úteis para criar ou atualizar links entre entidades
Os objetos aninhados descrevendo entidades relacionadas contém o atributo ___KEY (preenchidos com a chave primária da entidade relacionada) ou a chave primária da entidade relacionadaem si mesma. O uso do atributo __KEY permite independência do nome da chave primária.
Nota: o conteúdo das entidades relacionadas não podem ser criadas/atualizadas através do mecanismo.
Stamp (carimbo)
Se um atributo __STAMP for dado, uma verificação é realizada com a stamp na datastore e um erro pode ser retornado ("Dado que a stamp não corresponda à stamp atual para o record# XX da tabela XXXX").
No parâmetro opcional settings, você pode passar um objeto contendo opções adicionais. A seguinte propriedade é suportada:
Propriedade | Tipo | Descrição |
context | Texto | Rótulo para o contexto de otimização aplicado à seleção de entidade. Esse contexto será usado pelo código que manipula a seleção de entidade para que possa se beneficiar da otimização. Esse recurso é projetado para processamento de cliente / servidor ORDA; Para mais informações, consulte a seção Client/server optimization. |
Para atualizar uma entidade existente, a propriedade __NEW não é dada, e a chave primária de funcionário é dada e existe:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=668 // Chave primária existente em tabela Employee
$emp.firstName:="Arthur"
$emp.lastName:="Martin"
$emp.employer:=New object("ID";121) //Chave primária existe na classe de dados relacionada Company
// Para este empregado, podemos mudar a Company usando outra Chave primária existente na classe de dados relacionada Company
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Se quisermos atualizar uma entidade existente, a propriedade __NEW não dada, a chave primária de funcionários está com o atributo __KEY e existe:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.__KEY:=1720 //Chave Primária existente em tabela Funcionários - Employees
$emp.firstName:="John"
$emp.lastName:="Boorman"
$emp.employer:=New object("ID";121) //Existing PK in the related dataClass Company
// Para este funcionário, podemos mudar a Empresa - Company usando outra chave primária existente na classe de dados relacionada Company
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Criação simples de uma nova entidade da coleção:
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)
Se quisermos criar uma entidade, a propriedade __NEW é True, e a chave primária de funcionários não é dada:
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) // Chave primária existente na classe de dados relacionada Company
$emp.__NEW:=True
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Se quisermos criar uma entidade, a propriedade __NEW é omitida, a chave primária do funcionário é dada e não existe:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10000 //Chave primária não existe
$emp.firstName:="Françoise"
$emp.lastName:="Sagan"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Neste exemplo, a primeira entidade será criada e salva mas a segunda vai falhar já que ambas usam a mesma chave primária:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$emp2;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10001 // Chave primária não existe
$emp.firstName:="Simone"
$emp.lastName:="Martin"
$emp.__NEW:=True
$empsCollection.push($emp)
$emp2:=New object
$emp2.ID:=10001 // Mesma chave primária, já existente
$emp2.firstName:="Marc"
$emp2.lastName:="Smith"
$emp2.__NEW:=True
$empsCollection.push($emp2)
$employees:=ds.Employee.fromCollection($empsCollection)
//first entity is created
//erro de duplicação de chave para a segunda entidade
Produto: 4D
Tema: ORDA - DataClass
Criado por: 4D v17
Modificado: 4D v17 R5
Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)