Entity Framework ne sera pas montrer des procédures stockées
J'ai été déconner avec ce matin, mais je ne peux pas trouver la réponse. Je suis en train d'utiliser EF pour faire référence à une des procédures stockées, mais peu importe ce que j'essaye je n'arrive pas à afficher dans l'explorateur de modèles.
J'ai utilisé la procédure suivante pour tenter d'obtenir les procédures dans le modal:
-
ajouter procédure de modèle d'Entité
-
clic droit sur le modèle et choisissez ajouter un nouveau --> Fonction d'Importation
-
Lui donner un nom et sélectionnez ma procédure
-
générer un nouveau complexe de collection (j'ai aussi essayé à l'aide d'une entité, ni de travail)
-
cliquez sur OK
Je l'ai fait à de nombreuses reprises, et je peux voir la fonction dans la fonction "Importations" dossier dans le modèle, mais il n'apparaît jamais dans le modèle, donc je ne peux pas faire référence.
Je trouve que je peut faire référence à la procédure stockée directement (sans passer par l'import) en procédant comme suit:
DBEntities db = new DBEntities();
var test = db.gsp_GetGroups();
Cependant, je ne peux pas convertir cette IQueryable<T>
sans grande solution de contournement.
Quelqu'un sait ce que je suis absent pour obtenir ce pour ajouter correctement?
Grâce
P. S. VS 2012, asp.net 4.0
- J'ai le même problème, avez-vous jamais comprendre quel était le problème?
- Pour mon projet, j'ai fini pas l'utilisation de EF pour les procs, mais je me souviens de discuter du problème avec un autre développeur, et que je m'en souvienne, il a dit qu'il avait un problème avec le proc de ne pas avoir tout modèle associé. Je vais essayer de le traquer et de lui demander.
- FWIW, Stockées proc résultats ne peuvent pas être étendu par le biais de IQueryable sur le côté serveur. Vous pouvez avoir besoin d'utiliser un tableau de valeur de la fonction d'importation si vous voulez plus de fonctionnalités de requêtes transmises à l'ensemble de données.
Vous devez vous connecter pour publier un commentaire.
Vérifier que le SQL de connexion que vous utilisez pour générer votre modèle EF a l'autorisation d'exécution de la stockées procs que vous souhaitez importer.
connectionStrings
entrée (généralement en bas). Si vous avez plus de 1 chaîne de connexion, celui que vous voulez est celle de votre contexte d'utilisation.MyDbModel.edmx
, puis sous que vous aurezMyDbModel.Context.tt
qui contiendraMyDbModel.Context.cs
.MyDbModel.Context.cs
fichier, vous avez une classe qui hérite deDbContext
et le constructeur d'appelbase("name=<your connection string name>")
<your connection string name>
est la personne que vous cherchez dans votre application.config.Aller à la SP dans Sql Server Management Studio, cliquez sur propriétés, aller à Définir des autorisations de public à Exécuter.
Ci-dessus pourrait être la réponse c'est un problème d'autorisations, les réponses ci-dessus me fait voir pourquoi et conclu cette.
Cela peut être parce que Entity Framework est la signature de la base de données avec un id utilisateur n'est pas autorisé à exécuter des procédures stockées.
À savoir:
Dans votre application.config ou web.fichier de configuration sur votre .Un projet de réseau, vérifiez les
user id
accède à la base de données. Vous le verrez aprèsconnectionString
juste aprèsuser id=
.Si il est différent de l'id utilisateur que vous avez utilisé pour écrire la procédure stockée (c'est à dire dans SQL), vérifiez auprès de votre administrateur de base de données pour voir si l'id utilisateur à partir de votre .NET (et, par conséquent, Entity Framework) a la permission d'exécuter des procédures stockées.
@Limey Votre problème est probablement causé par la
Access
niveau de votre fonction d'importation. Essayez ceci:Dans le
Model Browser
trouver le dossierFunction Inports
. Maintenant, faites un clic droit dans votre fonction et choisirProperties
. Dans la fenêtre propriétés de la première option doit êtreAccess
changer dePublic
et enregistrer votre modèle.edmx.Revenir dans votre code et de voir si ce travail.
J'ai eu un problème similaire, la mise à niveau à partir d'Entity Framework 5 à 6 tenté de résoudre le problème pour moi.
Pour moi, il n'apparaissait pas dans mon habitude de schéma de sql server sous les procédures stockées, bien qu'il montrait le même schéma correctement dans la section de tableaux.
Espère que cela aide quelqu'un d'autre.