Je suis un peu nouveau pour la programmation de base de données en général, et même plus récent pour Entity Framework 4. Je lis le livre d'O'Reilly Press sur le sujet, et je veux juste être sûr que je comprends ce que l'auteur dit à propos de l'utilisation des vues en conjonction avec les procédures stockées pour une couche de sécurité supplémentaire. Elle dit:Vues et procédures stockées - utilisation des deux pour la sécurité DB (Entity Framework 4)
Si vous êtes réticent à exposer vos tables de base de données pour l'interrogation, vous n'avez pas à le faire. ... Les vues viennent dans le modèle en tant qu'entités, mais parce que les vues sont en lecture seule, Entity Framework n'est pas capable de construire des commandes pour conserver les données dans la base de données lorsque vous appelez SaveChanges. ... Cependant, ces entités participent toujours au suivi des changements, comme toutes les autres entités (avec une mise en garde sur EntityKeys dont je parlerai dans un instant). Vous pouvez ensuite mapper des procédures stockées sur ces entités basées sur une vue afin de conserver les données lorsque vous appelez SaveChanges. Cela vous donne un aller-retour complet pour interroger et mettre à jour les données sans exposer vos tables de base de données.
J'ai quelques difficultés à comprendre comment ce mappage de procédure stockée fonctionnerait puisque les vues sont en lecture seule. Est-elle en train de dire que les procédures stockées seraient mappées aux entités représentées par la vue, avec les procédures d'insertion, de mise à jour et de suppression mappées à la base de données et la procédure de sélection mappée à la vue?
Alors, qu'allons-nous réellement faire fonctionner avec INSERT, UPDATE et DELETE, la vue ou la base de données elle-même? Mon instinct dit base de données, puisque la vue est en lecture seule. Ou, est-ce que la vue est modifiée d'une manière ou d'une autre à travers ses entités, et ces changements sont ensuite transmis silencieusement à la base de données elle-même? EDIT: Je pense qu'une partie de mon problème ne comprend pas ce que sont les vues. Je pensais qu'ils étaient juste un instantané en lecture seule de la structure d'une base de données et des données actuelles. Il semble qu'ils sont plus impliqués que ça. –
@ kevinmajor1: les processus stockés fonctionneraient généralement sur les tables de la base de données elles-mêmes. Mais: la vue ne doit pas être en lecture seule - vous pouvez très bien avoir des vues pouvant être mises à jour. Une vue est juste une instruction SELECT "pré-faite" qui renverra un ensemble spécifique de données - et normalement, la vue n'est pas plus qu'une simple instruction qui sera fusionnée avec vos clauses WHERE supplémentaires etc. pour former une instruction SQL à la fin. –
@ kevinmajor1: consultez cet article de blog expliquant ce qu'est une vue: http://odetocode.com/code/299.aspx –