MVC 5 Entity Framework 6 Exécuter la Procédure Stockée
Je suis coincé. J'ai une application existante avec une très grande base de données et une vaste bibliothèque de fonctions et procédures stockées. Tout ce que je veux faire est d'utiliser un DbContext pour exécuter une procédure stockée et renvoyer un ensemble de données ou d'une carte à l'une des entités dans le contexte. Est-ce quelque chose de magique, je n'ai pas découvert sur le net quelque part? Quelqu'un, quelqu'un, s'il vous plaît aider. Voici ce que j'ai eu jusqu'à présent (et ça ne retourne rien, le résultat est -1):
var contacts = db.Database.ExecuteSqlCommand("Contact_Search @LastName, @FirstName",
new SqlParameter("@LastName", GetDataValue(args.LastName)),
new SqlParameter("@FirstName", GetDataValue(args.FirstName)));
D'exécution qui retourne -1. J'ai aussi essayé quelque chose à l'effet du présent sans succès:
DbRawSqlQuery<Contact> data = db.Database.SqlQuery<Contact>
("EXEC Contact_Search @LastName, @FirstName",
GetDataValue(args.LastName),
GetDataValue(args.FirstName));
Je comprends que je pourrais ajouter un edmx et de la carte à une procédure stockée de cette façon, mais ce n'est pas la méthode préférée. Encore une fois, notre base de données contient près de 450 millions d'enregistrements et d'une bibliothèque de près de 3 000 procédures stockées et des fonctions. Ce serait un cauchemar à maintenir. Suis-je à même de commencer dans la bonne direction? Est Entity Framework le bon choix?
OriginalL'auteur clockwiseq | 2014-10-15
Vous devez vous connecter pour publier un commentaire.
Wow, il me semble bon après j'abandonne, j'ai un peu de tomber sur la réponse. J'ai trouvé un Poste FANTASTIQUE sur l'exécution de procédures stockées et après l'avoir lu, c'était ma solution:
Donc, un grand merci à Anuraj pour son excellent post! La clé de ma solution a été de la première utilisation
SqlQuery
au lieu deExecuteSqlCommand
, et aussi d'exécuter la méthode de cartographie de mon modèle d'entité (Contact
).OriginalL'auteur clockwiseq
Ce code est mieux que SqlQuery() car SqlQuery() ne reconnaît pas l' [Colonne] attribut.
Ici, il est sur un plateau d'argent.
Merci pour le partage de ce code. Maintenant fe peut faire des miracles 🙂 qu'est-Ce que DbContextExtensions? Et est-il possible pour vous de partager sa mise en œuvre avec des Génériques de Modèle de Référentiel ou un Modèle de Référentiel. Il sera d'une grande aide pour les débutants comme moi.
Il a obtenu, son extension pour DbContext classe 🙂
Nice. Pourriez-vous aussi poster vos
DbContextExtensions
code?OriginalL'auteur Geerry Drakerama