mardi 11 février 2014

Comment appeler une procédure stockée avec Entity FrameWork ?


Avant de répondre à cette question il peut être utile de parler des avantages et désavantages à utiliser des procédures stockées.
Avantages:

1) Pour certains traitements cela peut augmenter les performances de l'application.

2) Cela peut être un moyen d'empêcher les utilisateurs d'avoir un accès directe à la base de donnée.

3) C'est un moyen de gérer des traitements SQL compliqués. 

Désavantages:

1) La logique applicative se trouve déportée dans des endroits différents

2) Vous devez connaitre  le Transact Sql ou le PL SQL selon que vous utlisiez SQL Server ou Oracle.

Avec Entity Framework je pense que l'avantage 2 peut être éliminée parce que nous travaillons avec des entités et avant que nous puissions supprimer ou créer un enregistrement nous devons créer un objet, l'ajouter au contexte courant et ensuite appeler une méthode sauvegarder ou valider. Aucune opération de création, lecture, mise à jour ou de suppression n'est directement effectué en base.

L'avantage 3 n'en est plus une parce avec Linq to Entities il est possible de faire n'importe qu'elle traitement complexe pouvant interagir avec la base de donnée.


Appeler une procédure stocké avec Entity Framework :

Pour mettre à jour votre modèle afin qu'il prenne en compte une procédure stockée nouvellement crée :  

Faire un clique droit dans le designer (Model de donnée Entity FrameWork)

L'assistant création de base de donnée apparaît. On sélectionne la procédure stockée désirée et on clique sur terminer. Dans l'explorateur de model on clique avec le bouton droit de la souris sur notre procédure stockée et l'on choisie "Ajouter le model d'import" dans le menu contextuel. Cela créera une fonction dans notre projet avec les paramètres d'appel de la procédure stockée. Maintenant  notre fonction est accessible à partir du Context.

Une autre façon d'appeler une procédure stockée est d'appeler la méthode de Contexte SqlQuery.

Aucun commentaire:

Enregistrer un commentaire