Je ne peux pas obtenir le paramètre de sortie lors de l'utilisation de la fonction import par Entity Framework
Voici ma procédure stockée SQL Server :
ALTER PROCEDURE [dbo].[SearchUser]
(@Text NVARCHAR(100),
@TotalRows INT = 0 OUTPUT)
AS
BEGIN
SELECT @TotalRows=1000
SELECT * from Users
END
Et mon code C#
using (var context = new TestDBEntities())
{
var outputParameter = new ObjectParameter("TotalRows", typeof(Int32));
context.SearchUser("", outputParameter);
Response.Write(outputParameter.Value);
}
Cependant outputParameter.Value
est toujours null.
Quelqu'un pourrait-il me dire pourquoi?
source d'informationauteur Jacob Phan
Vous devez vous connecter pour publier un commentaire.
Paramètres de sortie rempli par ses valeurs réelles lors de l'exécution de la procédure stockée.
Mais table procédure stockée effectivement exécuté uniquement dans le moment quand vous essayez d'effectuer une itération jeu d'enregistrements résultant, mais pas l'appel d'une méthode wrapper.
Donc, cela NE fonctionne PAS:
Ce N':
Lorsque vous travaillez avec des procédures stockées, ce qui ne renvoie pas un jeu d'enregistrements, ils exécutent immédiatement après un appel de méthode, de sorte que vous avez de la valeur réelle dans le paramètre de sortie.
Nous avons eu une similaires, à cause de différés de la excecution nos tests unitaires échoué. En bref si vous avez un procédure stockée qui ne retourne rien, vous devez être sûr de définir le type de réponse que "None" lorsqu'il est réglé sur "Aucun", il sera excecuted lorsqu'il est appelé et non différée.
Dans le cas où vous retourne rien (E. g. Type scalaire de la Chaîne de résultats) il va exécution lorsque vous utilisez le résultat, même si cela .Count() ou .ToList() est en dehors de la méthode qui contient l'appel de la fonction.
Donc, essayez de ne pas forcer excecution si pas besoin, quand nécessaire, il doit exécution, mais assurez-vous de déclarer correctement ou il pourrait ne pas fonctionner.
J'ai le même problème avant. La principale raison je pense que les entités cadre a l'erreur dans le cas où l'utilisateur de la procédure stockée a la sortie paramètre et retourne un jeu de résultats. Par exemple:
Toutefois, si vous modifiez l'utilisateur procédure stockée comme suit, vous pouvez obtenir la sortie params
Vous pouvez solution de contournement comme suit:
Si quelqu'un a une meilleure solution, s'il vous plaît dites-moi