Est-il Possible d'appeler une Procédure Stockée à l'aide de LINQ dans LINQPad?
Dans visual studio, vous avez la belle designer qui encapsule une procédure stockée avec une chouette petite méthode. Je suis totalement en amour LINQPad et de l'utiliser sur une base quotidienne au travail (n'ont pas eu besoin d'ouvrir de SQL Studio pour mon travail depuis que je l'ai utilisé!) et voudrais appeler stockées procs tout en l'utilisant.
J'ai peur de connaître la réponse à ma propre question, mais je suis en espérant que peut-être il y a une fonctionnalité que je suis absent ou peut-être quelqu'un a un peu de magie noire qu'ils peuvent me prêter pour ce faire. Btw, je suis en utilisant LINQPad 4 si cela fait une différence.
Modifier
Voir ma réponse ci-dessous.
- Procédure stockée soutien dans LINQPad s'est encore améliorée dans la version 4.28 (www.linqpad.net/beta.aspx): il prend désormais en charge les paramètres facultatifs, vous permet d'accéder à la valeur de retour + valeurs de paramètre de sortie, et vous permet d'appeler sys procs (comme sys.sp_who2) à partir d'une base de données. Aller Aider | Quoi de neuf pour plus d'info.
- Merci pour le heads up Joe 🙂
- Content d'avoir pu aider. Vous voudrez peut-être prendre votre "réponse", la section de votre question et de le poster comme une réponse réelle. Si vous l'avez fait, je upvote, car il ajoute des informations utiles.
- noté et ajouté ma réponse ci-dessous.
- Un petit exemple ici à l'aide de LINQPAD. hodentekmsss.blogspot.dans/2015/01/...
Vous devez vous connecter pour publier un commentaire.
Au moins dans mon exemplaire de LINQPad, procédures stockées apparaître dans la base de données treeview et peut être appelée directement.
Voici une capture d'écran:
Réunissant quelques-uns des autres réponses ainsi que l'ajout d'un bit d'information supplémentaire:
Vous connecter à votre source de données à l'aide de la par Défaut (LINQ to SQL) pilote. Assurez-vous que la case à cocher Inclure des Procédures Stockées et des Fonctions est cochée.
Procédures stockées et les fonctions sont désormais disponibles .NET de fonctions (par exemple, C#) dans les requêtes à l'aide de la connexion. Les paramètres requis par la fonction reflète les paramètres requis par la procédure stockée ou une fonction base de données.
La valeur retournée par la fonction est une
ReturnDataSet
qui est un LINQPad type résultant deDataSet
. Malheureusement, il n'est pas si facile pour effectuer des requêtes LINQ sur des ensembles de données, mais LINQPad fournit la méthode d'extensionAsDynamic()
qui aura le premier tableau de la série de données (normalement il n'y a qu'une seule table) et de convertir les lignes àIEnumerable<Object>
où les objets de la collection sont dynamiques vous permettant d'accéder à la colonne de valeurs de propriétés. E. g. si votre procédure stockée retourne les colonnesId
etName
vous pouvez utiliser LINQ:Malheureusement vous ne disposerez pas d'intellisense car la ligne de objets dynamiques.
Ma Réponse (Avec Daniel de l'aide, merci.)
Daniel m'a aidé à comprendre que les procédures stockées peuvent être appelés si vous ciblez une base de données avec la liste déroulante dans la fenêtre de requête, puis, dans la fenêtre de requête d'appel de la procédure stockée par son nom et ajouter des parenthèses à la fin de l'appeler comme une fonction.
La principale différence entre la version actuelle (je suis en utilisant 4.26.2 à compter de cette date), c'est que LINQ dans VS retourne les types de données personnalisés pour correspondre à des objets de données retourné par la procédure stockée et LINQPad retourne un DataSet. En sélectionnant "C# Déclaration(s)", vous pouvez exécuter cette requête en tant que:
Merci pour l'aide de tous!
Je suis en utilisant 4.51.03 de la version et de la connexion à SQL Server 2012 Express edition. Après la connexion à la base de données AdventureWorks2012 je peux en voir de toutes les procédures stockées. En cliquant-droit sur une procédure stockée et en choisissant StoredProceedureName(...) déroulante, vous affichez la procédure stockée dans la fenêtre de requête. Vous devez insérer les paramètres à l'intérieur de la parenthèse contenant les points de suspension et d'exécuter la requête.
Exemples sont présentés dans la suite de deux postes:
http://hodentekmsss.blogspot.com/2015/01/learn-querying-sql-server-2012-using.html
http://hodentekmsss.blogspot.com/2015/01/learn-querying-sql-server-2012-using_25.html
Exemple: Dire que j'ai une Procédure Stockée appelée
PersonMatchNoDOBRequired
et il attend de moi pour passer un prénom et un NomSi je veux plus de filtrage ( dans mon cas, j'ai un algorithme avancé dans sql qui marque le premier et le dernier nom , prénom pouvez retourner "Jodi" , mais disons que j'ai vraiment envie de le filtrer plus loin, il est comme ceci:
D'autres réponses sont partiellement droit - je n'ai rien vu passer dans les paramètres ( si nécessaire).
Vous pouvez simplement enregistrer une requête qui utilise C# avec la norme ADO.NET les objets (
SqlConnection
,SqlCommand
, etc) etDump()
les résultats.Je me rends compte qu'il n'est pas à l'aide de LINQ, mais il m'a bien servi.