Ao criar uma associação na ECO não estiver garantida a ordem em que os objetos no final da associação, será apresentado. Por esta razão ECO fornece um Boolean "ordenada" propriedade em associação termina.
Quando você define Pedida = True no seu modelo e, em seguida, gerar o seu banco de dados, ECO irá criar mais uma coluna no seu banco de dados para identificar a seqüência dos objetos.
Acabei de criar SalesInvoice / SalesInvoiceLine classes e optaram por uma associação ordenada, basicamente porque é prática padrão da indústria para identificar cada linha de uma fatura / Despacho com um número seqüencial, tornando-o facilmente ela identifyable quando se discutem.
Teria sido legal se eu pudesse ter usado um atributo com uma resultantes OCL expressão semelhante a esta:
this.SalesInvoice.lines-> indexOf (auto)
OCL, mas infelizmente não parece ter uma forma de encontrar o índice de um objeto em uma coleção, por isso, teve de recorrer a escrever um código derivado do atributo.
I marcou o primeiro atributo como Provém, e não entra nenhum DerivationOCL para ele. Então, acrescentei um método público à classe com a seguinte assinatura
LineNumberDeriveAndSubscribe público Int32 (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
Finalmente, o código para o atributo tinha que fazer o seguinte
- Assine o SalesInvoice propriedade
- O objeto não tem SalesInvoice, retornar -1
- Inscrever-se para SalesInvoice.Lines
- Retornar ao índice deste objeto em SalesInvoice.Lines
LineNumberDeriveAndSubscribe público Int32 (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
(
AsIObject (). Properties [ "SalesInvoice"]. SubscribeToValue (resubscribeSubscriber);
if (this.SalesInvoice == null)
return -1;
diferente
(
SalesInvoice.AsIObject (). Properties [ "Linhas"]. SubscribeToValue (resubscribeSubscriber);
retorno this.SalesInvoice.Lines.IndexOf (este) + 1;
)
)
Para uma explicação sobre a diferença entre a reavaliar e novamente, dê uma olhada neste artigo.

Delicious
Digg
Google
Yahoo