2010-09-30 21 views
0

J'ai donc l'obligation de n'utiliser que des procédures stockées pour toutes les opérations de base de données. J'ai créé des procédures stockées CRUD pour chacune de mes tables, puis créé mes modèles Entity.Entité lire le mappage de procédure stockée?

Donc, je vois facilement comment mapper mes procédures stockées Insérer, Mettre à jour et Supprimer à mon entité (client par exemple), mais il semble y avoir aucun moyen de mapper mon Select? Ceci est juste un ancien choix, il devrait juste renvoyer une liste de mes entités client - donc il mappe directement à mon type d'entité, ce n'est pas personnalisé. Il semble que le seul moyen d'y parvenir est d'importer une fonction et de la mapper.

Alors, pourquoi pas la possibilité de mapper Sélectionnez directement? Il y aurait d'énormes avantages pour moi de le faire!

Peut-être que ma procédure stockée ne convient pas?

Vous avez des idées?

Répondre

2

Vous utiliseriez la fonction dans EF qui vous permet d'ajouter des procédures stockées au diagramme et celles-ci deviennent des méthodes que vous pouvez invoquer directement. Si vous ouvrez ensuite le navigateur de modèles, puis recherchez les procédures SELECT que vous avez ajoutées, vous pouvez double-cliquer sur chacune d'entre elles et lier le type de retour au modèle d'entité. La convention d'appel serait alors

MyEntity entity = myDB.MyStoredProcedure().FirstOrDefault(); 

HTH, Jon

+0

Ceci est une solution de contournement, que je me sers. Mais cela ne résout pas vraiment le problème - par exemple avec une classe DomainService, elle veut utiliser la propriété Customer pour obtenir des propriétés - je dois changer manuellement mon service pour utiliser ma fonction importée - ce qui est mauvais si j'ai besoin de regen un service. Insert Update et Delete peuvent être mappés de sorte qu'au niveau de l'entité ils sont utilisés. Mais vous ne pouvez pas faire cela pour sélectionner. – Nicros

+0

Ce n'est pas vraiment une «solution de contournement», il semble logique légitime. Pour les sélections, comme je l'ai mentionné ("lier le type de retour au modèle d'entité"), les procédures stockées peuvent être mappées directement à un type d'entité, plutôt qu'à un type spécifique à la fonction de procédure stockée. Donc, dans mon exemple, MyStoredProcedure() renvoie une instance de MyEntity, pas de quelque chose d'autre. Par défaut c'est autre chose, vous devez mapper la sortie à MyEntity manuellement depuis le niveau de l'interface importée, ceci étant l'opposé de l'assignation du sproc à l'entité. Même différence, juste un endroit différent. –

+1

Désolé si je n'ai pas été assez utile, mais pour répondre à votre question initiale, il n'y a pas grand-chose à faire si la bibliothèque a encore cette limitation. À l'heure actuelle, je suis toujours fâché que INSERT via SPROC ne liera pas la colonne IDENTITY à un paramètre de sortie. Pour être soi-disant «entreprise-classe», EF4 est encore assez pathétique non grâce à cela et les solutions de contournement, il faut produire. –