|
Une fonction ssdl est soit une procédure stockée, soit une commande sql directement définie dans le ssdl. Dans EDM, il y a deux types de fonctions ssdl : - les fonctions de type Create Update Delete
- les fonctions de type Read
Pour utiliser des procédures stockées, il faut dans un premier temps les avoir importées dans le modèle (dans la description de la base). Ceci se fait facilement via l'écran « Choose your DataBase Objects » du wizard vu au début.
Dans la version 1 d'EDM, si le développeur souhaite utiliser une function ssdl de type CUD, il est obligé d'utiliser une fonction pour chacune des trois opérations (INSERT, UPDATE, DELETE). Pour l'exemple, Customer et Member seront réduits (voir le schéma suivant), avec CustomerID définit comme un entier auto-incrémenté côté base. Dans la fenêtre Mapping Details, il suffit de mapper les paramètres des fonctions ssdl avec les propriétés de l'entité. Dans le Insert, la flèche de la colonne Operator est dans l'autre sens pour CustomerID. En effet, c'est bien la base qui va renseigner la propriété et non l'inverse (la valeur étant calculée par la base). Dans le cas présent, la fonction ssdl est la suivante : INSERT INTO Customers ([Name]) VALUES (@Name) SELECT SCOPE_IDENTITY() as CustomerID Pour l'Update, il est possible de définir la version à utiliser : Current ou Original.
Pour Member, supposons que le INSERT effectue préalablement un INSERT dans Customer. De même, supposons que le UPDATE de Member possède le paramètre Name de Customer. Il va donc falloir mapper via la relation :
Dans le cas d'un héritage, si la classe de base effectue ses opérations de CUD par fonctions ssdl, il devra en être de même pour ces classes filles et inversement.
Dans ce cas, il va falloir importer la procédure stockée du ssdl (qui décrit la base de données) vers le csdl (qui décrit les entités). Suite à cela, il faut définir le nom de la méthode à créer et le type de retour de celle-ci. Ce type peut être un type de base (string, int, etc.), rien du tout (void) ou une entité définie dans le csdl. Une fois cela effectué, la classe TestEntities (qui hérite de ObjectContext) contient une nouvelle méthode.
|
|
|
|
|