Many-To-Many
Esta funcionalidade apenas estará disponível na próxima versão da framework.
O padrão Many-To-Many passa a ser suportado ao nível das relações entre duas entidades, ou seja, passa a ser possível modelar entidades como tendo relação de muitos para muitos com outra qualquer entidade específica.
Isto significa que, ao nível da aplicação, ao aceder a uma entidade A é possível definir relações com entidade B e vice-versa.
Modelo de Entidades
É no modelo de entidades que são especificadas relações de Many-To-Many entre entidades.
Este tipo de relações pode ser efetuada entre:
- Entidades Master -> Entidades Master (incluindo extensão “base” de outras entidades), Entidade Externa;
- Entidade Externa -> Entidades Master (incluindo extensão “base”);
Para entidades do tipo Detail e Extensões (não base), este tipo de associações não é possível efetuar.
Além disso, não é possível definir relações Many-To-Many de uma entidade master do tipo extensão (base) para uma extensão dessa mesma entidade, bem como não é possível efetuar estas relações a uma entidade do tipo Value List.
Para efetuar uma associação deste tipo entre as entidades, basta selecionar as entidades pretendidas e criar uma associação do tipo Many-To-Many.


Geração de Código
(em construção)
Base de Dados
Ao serem criadas relações de Many-To-Many no modelo de entidades, após transformar a solução irá ser criada uma tabela (tabela ponte para essas respetivas entidades), onde é feita a relação entre as mesmas.

Esta tabela irá sendo populada à medida que, na aplicação ou via webApi, se efetue a criação de registos de uma dessas entidades e se relacione com um ou vários registos de outra entidade.
WebAPI (carece de atualização)
As operações disponíveis via webApi, devem estar suportadas para entidades com relações Many-To-Many, como:
- Get (e get paginado) (GET): ao efetuar esta operação via webApi, são apresentados todos os atributos referentes à entidade à qual estamos a fazer o get, como também é devolvida a lista de atributos dos registos da entidade relacionada (com relação Many-To-Many), com os quais existem relações definidas.
- Save (POST): Ao nível da criação de registo de entidade com relação de Many-To-Many para outra entidade, é necessário passar os valores para os atributos da entidade referente ao registo a criar. No caso de se pretender definir relações entre a entidade origem com a entidade relacionada Many-To-Many, é necessário também passar os respetivos valores para a criação da relação. Neste ponto, podem ser criadas relações do registo da entidade A, para um ou vários registos da entidade B.
- Update (PUT): O update é idêntico ao create, mas apenas são passados os atributos que se pretendem alterar com os respetivos valores, e/ou a atualização de relações com registos da entidade relacionada do tipo Many-To-Many.
- Delete (DELETE): um pedido de remoção de um registo de uma entidade leva à remoção de todas as relações previamente definidas para esse registo. Isto apenas é possível se, na modelação, a entidade estiver assinalada como sendo deletable.
Aplicação
Ao nível da aplicação, quando existe uma entidade A com relação Many-To-Many para uma entidade B, ao aceder à criação/update de um registo de uma dessas entidades (ex: Entidade A) o que é apresentado são, os campos referentes à entidade sobre a qual estamos a criar um registo (Entidade A), bem como a lista de registos da entidade relacionada do tipo Many-To-Many (Entidade B).
Quando é criada uma relação num registo de uma dessas entidades, automaticamente, a relação é também criada para o respetivo registo de outra entidade.
Quando é efetuada a remoção de um registo (se a entidade for do tipo deletable) com relação definida, a relação também é removida, sendo a tabela ponte atualizada.
Drafts
Os drafts são também suportados para registos de entidades Many-To-Many.
Quando se procede à criação de um registo, é criado o respetivo draft e, tal como acontece com os restantes registos, é guardada toda a informação previamente inserida aquando da criação, incluindo as definições das relações.