读取存储过程参数值中的问题

问题描述:

执行它时,我无法从存储过程读取值。读取存储过程参数值中的问题

这里是我的存储过程

ALTER Procedure [dbo].[SaveInvitation] 
(
    @InvitationID INT OUTPUT, 
    @UserID INT, 
    @Email NCHAR(100), 
    @InvitationGUID UNIQUEIDENTIFIER OUTPUT 
) 
AS 
BEGIN 
SET NOCOUNT ON; 

BEGIN TRY 
    IF @UserID = -1 
     BEGIN 
      SET @UserID = NULL 
     END 

    IF NOT EXISTS (SELECT 1 FROM Invitations WHERE LTRIM(RTRIM(Email)) = LTRIM(RTRIM(@Email))) 
     BEGIN 
      INSERT INTO Invitations (UserID, 
        Email, 
        CreateDate) 
      VALUES (@UserID, 
        @Email, 
        GETDATE()) 

      -- GET NEWLY INSERTED INVITATIONS ID 
      SET @InvitationID = IDENT_CURRENT('Invitations') 

      -- GET GUID FROM INVITATION ID 
      SELECT @InvitationGUID = InvitationGUID 
      FROM Invitations 
      WHERE InvitationID = @InvitationID 
     END 
    ELSE 
     BEGIN 
      RAISERROR('ALREADY_INVITATED', 16, 127) 
     END 
END TRY 
BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     BEGIN 
      ROLLBACK 
     END 
    EXEC ThrowError 
END CATCH 
END 

我从这个函数执行此过程

DataBaseModel.Designer.cs

public ObjectResult<SaveInvitation_Result> SaveInvitation(ObjectParameter invitationID, Nullable<global::System.Int32> userID, global::System.String email, ObjectParameter invitationGUID) 
    { 
     ObjectParameter userIDParameter; 
     if (userID.HasValue) 
     { 
      userIDParameter = new ObjectParameter("UserID", userID); 
     } 
     else 
     { 
      userIDParameter = new ObjectParameter("UserID", typeof(global::System.Int32)); 
     } 

     ObjectParameter emailParameter; 
     if (email != null) 
     { 
      emailParameter = new ObjectParameter("Email", email); 
     } 
     else 
     { 
      emailParameter = new ObjectParameter("Email", typeof(global::System.String)); 
     } 

     return base.ExecuteFunction<SaveInvitation_Result>("SaveInvitation", invitationID, userIDParameter, emailParameter, invitationGUID); 
    } 

它抛出一个异常

数据读取器与指定的'TestModel.SaveInvitation_Result'不兼容。类型为'InvitationGUID'的成员在数据阅读器中没有相应的列,名称相同。

我已经创建了一个复杂的类型,即​​和进口返回类型​​的一个功能SaveInvitation

我该如何解决上述异常?存储过程中是否有任何更改?

截屏

enter image description here

,因为你没有真正SELECT掀背结果它给你这个错误。如果您添加了一行你的程序结束例如:

SELECT @InvitationGUID AS InvitationGUID 

这应该只是罚款你。

+0

谢谢你的回复。是否需要这样做?我得到这个错误参数数组中索引为0的参数为空。 –

+0

在DataBaseModel.Designer.cs中,我没有将任何值传递给invitationID,invitationGUID –

+0

哦,我明白了,您需要删除这些参数(它们当前是'OUTPUT'参数),然后您将希望选择'SELECT'他们回来,如果你在'SaveInvitation_Result'中需要他们。简而言之,不要使用'OUTPUT'参数,而是发出'SELECT'语句,该语句返回一个匹配'SaveInvitation_Result'属性名称的列名称匹配的行。 –