Vurderer constraints

Før oppdatere databasen med endringer i dine gjenstander er det lurt å sjekke at objektet er i en gyldig tilstand først. ECO tillater deg å modellere begrensninger mot klassene ved å legge til en liste med OCL uttrykk, men vurderer ikke uttrykkene på noe punkt.
Det er faktisk et ansvar for at programmet skal sjekke om et objekt er gyldig eller ugyldig , og deretter bestemme hva du skal gjøre med det. En tilnærming er å sjekke gyldigheten av hvert objekt før den er lagret, kan dette oppnås i UpdateDatabase () metode for din EcoSpace
hjelp Borland.Eco.Services;.
...
//Få serviceIDirtyListService dirtyList = (IDirtyListService) EcoSpace.GetEcoService (typeof (IDirtyListService));
//Process hvert modifisert objekt if (dirtyList.HasDirtyObjects) {foreach (IObject dirtyObject i dirtyList.AllDirtyObjects som IList) {...} }
Nå som vi har en metode for å finne alle endrede gjenstander før de blir oppdatert i databasen, trenger vi bare å sjekke begrensninger av hvert objekt og kaste et unntak hvis noen av objektene er i en ugyldig tilstand.
bruker Borland.Eco.UmlRt; bruker Borland.Eco.Services;
... //Få OCL tjenesten IOclService oclService = (IOclService) EcoSpace.GetEcoService (typeof (IOclService));
//Vurdere hver begrensning av gjeldende objekt for (Int32 constraintIndex = 0; constraintIndex < = dirtyObject.UmlType.Constraints.Count; constraintIndex ++) {IConstraint begrensning = dirtyObject.UmlType.Constraints [constraintIndex]; bool IsValid = (bool) oclService.EvaluateAndSubscribe (dirtyObject, constraint.Body.Body, null, null) .AsObject;
if (isValid.AsObject) kaster nytt unntak (constraint.Name);}}}

TIPS Bilde: Jeg vil anbefale å sette " Tillat null " eiendom hvert attributt til " ekte ", selv det attributtet vil være nødvendig. Du kan da legge en begrensning til klassen slik at en nullverdi blir håndtert på samme måte som alle andre brudd.
I tillegg kan du endre hvorvidt et attributt er nødvendig ved å endre begrensningene, mens AllowNull omgivelsene skaper en database begrensning som ikke er tilsatt /sunket med ECO når du utvikle databasen. Anmeldelser