Quando si crea un'associazione Eco non si è garantito l'ordine in cui gli oggetti alla fine della associazione sarà presentata. Per questo motivo ECO offre una Booleano "ordine" di proprietà di associazione finisce.
Quando si imposta Ordinazione = True nel tuo modello e poi generare il database, ECO creerà un ulteriore colonna nella vostra base di dati che identificano la sequenza degli oggetti.
Sono appena stata la creazione di SalesInvoice / SalesInvoiceLine classi e ha scelto di avere un ordine di associazione, in fondo, perché è normale prassi del settore per identificare ogni riga di una fattura / Ordine sequencial con un numero, il che rende facilmente identifyable che quando si discute.
Sarebbe stato bello se potessi avere utilizzato un attributo OCL derivati con un'espressione simile a questo:
this.SalesInvoice.lines-> indexOf (auto)
OCL, ma purtroppo non sembra essere un modo per trovare l'indice di un oggetto in una collezione, quindi ho dovuto ricorrere alla scrittura di un codice derivato attributo.
In primo luogo mi ha segnato l'attributo come derivati, e non entrare in qualsiasi DerivationOCL di esso. Poi ho aggiunto un metodo pubblico alla classe con il seguente firma
Int32 LineNumberDeriveAndSubscribe pubblico (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
Infine, il codice per l'attributo ha dovuto fare le seguenti
- Iscriviti alla proprietà SalesInvoice
- L'oggetto non ha SalesInvoice, return -1
- Iscriviti a SalesInvoice.Lines
- Restituisce l'indice di questo oggetto in SalesInvoice.Lines
Int32 LineNumberDeriveAndSubscribe pubblico (ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
(
AsIObject (). Properties [ "SalesInvoice"]. SubscribeToValue (resubscribeSubscriber);
if (this.SalesInvoice == null)
return -1;
altro
(
SalesInvoice.AsIObject (). Properties [ "Linee"]. SubscribeToValue (resubscribeSubscriber);
ritorno this.SalesInvoice.Lines.IndexOf (presente) + 1;
)
)
Per una spiegazione della differenza tra rivaluterà e ripetere, date un'occhiata a questo articolo.

Delicious
Digg
Google
Yahoo