J'ai mis à jour mon modèle avec ma procédure stockée et dans le navigateur de modèle, je peux voir qu'il a également une fonction d'importation.
Mon SP insère un enregistrement s'il n'en existe aucun et renvoie un 1 sinon renvoie 0, assez simple je pense.Comment utiliser le paramètre OutPut dans SP avec EF 4.0
SP
CREATE PROCEDURE [dbo].[User_UpdateMessage]
(
@UserId int = 0,
@UserId2 int = 0,
@Success bit = 0 OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT [UserIdFrom] FROM [dbo].[MessageUpdate] WHERE [UserIdFrom] = @UserId AND [UserIdTo] = @UserId2)
BEGIN
INSERT INTO [dbo].[MessageUpdate] ([UserIdFrom], [UserIdTo])
VALUES (@UserId, @UserId2)
SELECT @Success = 1;
END
ELSE
SELECT @Success = 0;
END
Dans mon code, je vous appelle le SP:
// Output Parameter
System.Data.Objects.ObjectParameter paramSuccess1 =
new System.Data.Objects.ObjectParameter("Success", typeof(byte));
_Entity.User_UpdateMessage(id, userId, paramSuccess1);
Il échoue lors de l'exécution de la SP avec l'erreur suivante:
The data reader returned by the store data provider does not have enough columns for the query requested
[MISE À JOUR]
En écrivant ceci, j'ai résolu le problème. Dans le concepteur de modèle, le type de retour doit être none, je l'ai eu pour retourner Byte.
Une réponse à cette question pourrait être d'autres améliorations ou changements.
Moi aussi, ont le même problème face à vous .... avez-vous une idée. – Ramakrishnan