Подтвердить что ты не робот

Как использовать параметр OutPut в SP с EF 4.0

Я обновил мою модель с помощью моей хранимой процедуры и в браузере модели, я вижу, что она также имеет функцию импорта. Мой SP вставляет запись, если она не существует и возвращает 1 else, возвращает 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

В моем коде я вызываю SP:

// Output Parameter
System.Data.Objects.ObjectParameter paramSuccess1 = 
new System.Data.Objects.ObjectParameter("Success", typeof(byte));
_Entity.User_UpdateMessage(id, userId, paramSuccess1);

Ошибка при выполнении SP со следующей ошибкой:

Устройство чтения данных, возвращаемое хранилищем провайдеру данных недостаточно столбцы запрошенного запроса

[UPDATE]
Когда я писал это, я решил проблему. В дизайнере модели возвращаемый тип не должен быть ничем, я должен был вернуть Байт.

Ответ на этот вопрос может быть дальнейшим усовершенствованием или изменениями.

4b9b3361

Ответ 1

У меня тоже была та же проблема, изменил тип возврата на NONE вместо int32. Спасибо, спасли мне часы отладки

Ответ 3

Попробуйте использовать это ниже.

// Output Parameter
System.Data.Objects.ObjectParameter paramSuccess1 = 
  new System.Data.Objects.ObjectParameter("Success", typeof(bool));
_Entity.User_UpdateMessage(id, userId, paramSuccess1);