2010-06-04 16 views
17

Tôi đã cập nhật Mô hình của mình bằng quy trình Đã lưu trữ của tôi và trong trình duyệt mô hình, tôi có thể thấy nó có chức năng Nhập khẩu chức năng.
SP của tôi chèn một bản ghi nếu không tồn tại và trả về 1 người khác trả về 0, khá đơn giản mà tôi nghĩ.Cách sử dụng tham số OutPut trong SP với 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 

Trong mã của tôi tôi kêu gọi các SP:

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

Người ta thất bại trong khi thực hiện các SP với các lỗi sau:

The data reader returned by the store data provider does not have enough columns for the query requested

[UPDATE]
Khi tôi viết bài này, tôi đã giải quyết được vấn đề. Trong trình thiết kế Model, kiểu trả về sẽ không là gì, tôi có nó để trả về Byte.

Câu trả lời cho câu hỏi này có thể là cải tiến hoặc thay đổi thêm.

+0

Tôi cũng có cùng một vấn đề bạn phải đối mặt với .... bạn đã nhận được bất kỳ ý tưởng. – Ramakrishnan

Trả lời

14

Tôi cũng gặp vấn đề tương tự, đã thay đổi kiểu trả về thành NONE thay vì int32. Cảm ơn đã cứu tôi giờ gỡ lỗi

+2

Bạn có thể thực hiện Trình duyệt mẫu này> Nhập khẩu chức năng> thuộc tính nhấp của bất kỳ chức năng nhập> sau đó chọn loại trả về 'Không có' –

0

Hãy thử sử dụng dưới đây ..

// Output Parameter 
System.Data.Objects.ObjectParameter paramSuccess1 = 
    new System.Data.Objects.ObjectParameter("Success", typeof(bool)); 
_Entity.User_UpdateMessage(id, userId, paramSuccess1); 
Các vấn đề liên quan