Ich habe mein Modell mit meiner gespeicherten Prozedur aktualisiert und im Modellbrowser kann ich sehen, dass es auch einen Funktionsimport hat.
Mein SP fügt einen Datensatz ein, wenn keiner existiert, und gibt eine 1 zurück, gibt 0 zurück, ziemlich einfach, denke ich.Wie man den OutPut-Parameter in SP mit EF 4.0 verwendet
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
In meinem Code ich die SP nenne:
// Output Parameter
System.Data.Objects.ObjectParameter paramSuccess1 =
new System.Data.Objects.ObjectParameter("Success", typeof(byte));
_Entity.User_UpdateMessage(id, userId, paramSuccess1);
Es versagt, während die SP mit dem folgenden Fehler ausführen:
The data reader returned by the store data provider does not have enough columns for the query requested
[UPDATE]
Während ich dies schrieb, löste ich das Problem. Im Modell-Designer sollte der Rückgabetyp keiner sein, ich hatte ihn Byte zurückzugeben.
Eine Antwort auf diese Frage könnte weitere Verbesserungen oder Änderungen sein.
Auch ich habe das gleiche Problem, das Sie mit Blick auf .... Sie eine Idee bekommen haben. – Ramakrishnan