L'évaluation des contraintes


Avant de mettre à jour la base de données avec des changements à vos objets, il est sage de vérifier que l'objet est dans un état valide en premier. & nbsp ECO permet de modéliser les contraintes à l'encontre de vos classes par l'ajout d'une liste des expressions OCL, mais ne pas évaluer les expressions à tout moment.

C'est en fait la responsabilité de l'application pour vérifier si oui ou non un objet est valide ou non, et ensuite décider quoi faire à ce sujet. & nbsp Une approche consiste à vérifier la validité de chaque objet avant de l'enregistrer, ce qui peut être réalisé dans le UpdateDatabase() la méthode de votre EcoSpace.

à l'aide de Borland.Eco.Services

...

//Obtenir le serviceIDirtyListService
dirtyList =
& nbsp (IDirtyListService) EcoSpace.GetEcoService(typeof(IDirtyListService))

//traitement de chaque objet modifié
if (dirtyList.HasDirtyObjects)
{
& nbsp foreach (IObject dirtyObject dans dirtyList.AllDirtyObjects comme IList)
& nbsp {
& nbsp & nbsp & nbsp ...
& nbsp }
}

Maintenant que nous avons une méthode de recherche de tous les objets modifiés avant qu'ils soient mis à jour pour la base de données, nous avons juste besoin de vérifier les contraintes de chaque objet et de lever une exception si l'un des objets sont dans un état non valide.

à l'aide de Borland.Eco.UmlRt
à l'aide de Borland.Eco.Services

...
//Obtenir l'OCL service
IOclService oclService =
& nbsp (IOclService) EcoSpace.GetEcoService(typeof(IOclService))

//Évaluer chaque contrainte de l'objet courant
for (Int32 constraintIndex = 0
& nbsp & nbsp constraintIndex <= dirtyObject.UmlType.Des contraintes.Le comte
& nbsp constraintIndex )
& nbsp {
& nbsp & nbsp & nbsp IConstraint contrainte =
& ! & ! & ! & ! & nbsp dirtyObject.UmlType.Contraintes[constraintIndex]
& nbsp & nbsp & nbsp bool isValid =
& ! & ! & ! & ! & nbsp (bool) oclService.EvaluateAndSubscribe(dirtyObject,
& ! & ! & ! & ! & ! & ! & nbsp contrainte.Corps.Corps, null, null).AsObject

& nbsp & nbsp & nbsp si (isValid.AsObject)
& ! & ! & ! & ! & nbsp throw new Exception(contrainte.Nom) }
& nbsp }
}

CONSEIL: je vous conseille le paramètre 'Autoriser les valeurs null' propriété de chaque attribut a la valeur 'True', l'attribut sera nécessaire. & nbsp Vous pouvez ensuite ajouter une contrainte à votre classe de sorte qu'une valeur null est traitée de la même manière que toute autre violation. & nbsp

& nbsp

En outre, vous pouvez choisir ou non un attribut est requis en modifiant les contraintes, alors que la AllowNull paramètre crée une contrainte de base de données qui n'est pas ajoutés/supprimés par ECO lorsque vous faites évoluer votre base de données.









L'evaluation des contraintes


L'evaluation des contraintes : Plusieurs milliers de conseils pour vous faciliter la vie.


Avant de mettre a jour la base de donnees avec des changements a vos objets, il est sage de verifier que l'objet est dans un etat valide en premier. & nbsp ECO permet de modeliser les contraintes a l'encontre de vos classes par l'ajout d'une liste des expressions OCL, mais ne pas evaluer les expressions a tout moment.

C'est en fait la responsabilite de l'application pour verifier si oui ou non un objet est valide ou non, et ensuite decider quoi faire a ce sujet. & nbsp Une approche consiste a verifier la validite de chaque objet avant de l'enregistrer, ce qui peut etre realise dans le UpdateDatabase() la methode de votre EcoSpace.

a l'aide de Borland.Eco.Services

...

//Obtenir le serviceIDirtyListService
dirtyList =
& nbsp (IDirtyListService) EcoSpace.GetEcoService(typeof(IDirtyListService))

//traitement de chaque objet modifie
if (dirtyList.HasDirtyObjects)
{
& nbsp foreach (IObject dirtyObject dans dirtyList.AllDirtyObjects comme IList)
& nbsp {
& nbsp & nbsp & nbsp ...
& nbsp }
}

Maintenant que nous avons une methode de recherche de tous les objets modifies avant qu'ils soient mis a jour pour la base de donnees, nous avons juste besoin de verifier les contraintes de chaque objet et de lever une exception si l'un des objets sont dans un etat non valide.

a l'aide de Borland.Eco.UmlRt
a l'aide de Borland.Eco.Services

...
//Obtenir l'OCL service
IOclService oclService =
& nbsp (IOclService) EcoSpace.GetEcoService(typeof(IOclService))

//Evaluer chaque contrainte de l'objet courant
for (Int32 constraintIndex = 0
& nbsp & nbsp constraintIndex <= dirtyObject.UmlType.Des contraintes.Le comte
& nbsp constraintIndex )
& nbsp {
& nbsp & nbsp & nbsp IConstraint contrainte =
& ! & ! & ! & ! & nbsp dirtyObject.UmlType.Contraintes[constraintIndex]
& nbsp & nbsp & nbsp bool isValid =
& ! & ! & ! & ! & nbsp (bool) oclService.EvaluateAndSubscribe(dirtyObject,
& ! & ! & ! & ! & ! & ! & nbsp contrainte.Corps.Corps, null, null).AsObject

& nbsp & nbsp & nbsp si (isValid.AsObject)
& ! & ! & ! & ! & nbsp throw new Exception(contrainte.Nom) }
& nbsp }
}

CONSEIL: je vous conseille le parametre 'Autoriser les valeurs null' propriete de chaque attribut a la valeur 'True', l'attribut sera necessaire. & nbsp Vous pouvez ensuite ajouter une contrainte a votre classe de sorte qu'une valeur null est traitee de la meme maniere que toute autre violation. & nbsp

& nbsp

En outre, vous pouvez choisir ou non un attribut est requis en modifiant les contraintes, alors que la AllowNull parametre cree une contrainte de base de donnees qui n'est pas ajoutes/supprimes par ECO lorsque vous faites evoluer votre base de donnees.


L'évaluation des contraintes

L'évaluation des contraintes : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation