Aja*_*y P 4 c# wcf stored-procedures sql-server-2008
我用一些参数创建了一个存储过程.这些是我的程序的参数:
ALTER Procedure [dbo].[SaveInvitation]
(
@InvitationID INT OUTPUT,
@UserID INT,
@Email NCHAR(100),
@InvitationGUID UNIQUEIDENTIFIER OUTPUT
)
AS
Run Code Online (Sandbox Code Playgroud)
我的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;
}
Run Code Online (Sandbox Code Playgroud)
我将一些参数传递给我的函数,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);
}
Run Code Online (Sandbox Code Playgroud)
当我执行这个函数/过程时,我得到一个异常
parameters数组中索引0处的参数为null.
如何传递值invitationID和invitationGUID?
当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);
}
Run Code Online (Sandbox Code Playgroud)