4

いくつかのパラメーターを使用してストアド プロシージャを作成しました。これらは私の手順の私のパラメータです:

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

私のfunction.cs

public SaveInvitation_Result SaveInvitation(int userID,string email)
{
        SaveInvitation_Result result = null;

        var results = this.DataContext.SaveInvitation(null,userID,email,null);

        if (results != null)
        {
            result = results.FirstOrDefault();
        }

        return result;
    }

SaveInvitation次のように、いくつかのパラメーターを関数に渡しています。

私の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);
}

この関数/手順を実行すると、例外が発生します

パラメーター配列のインデックス 0 のパラメーターは null です。

invitationIDとに値を渡すにはどうすればよいinvitationGUIDですか?

4

1 に答える 1

9

userIDまたはemailがの場合null、パラメータの値を に設定する必要がありますDBNull.Value

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));
        userIDParameter.Value = DBNull.Value;
    }

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

    return base.ExecuteFunction<SaveInvitation_Result>("SaveInvitation", invitationID, userIDParameter, emailParameter, invitationGUID);
}
于 2012-12-26T09:29:55.773 に答える