这是我试图传递数据的管理器代码
public Response AddDocument(JDocument value)
{
var response = new Response();
try
{
string spName = "[dbo].[xxxxxxxxx]";
this.Connect();
this.ClearSPParams();
this.AddSPStringParam("@Id1", value.Id1.ToString());
this.AddSPStringParam("@Id2", value.Id2.ToString());
this.AddSPStringParam("@DocumentType", value.DocumentType);
this.AddSPStringParam("@DocumentName", value.DocumentName);
this.AddSPStringParam("@Format", value.Format);
this.AddSPStringParam("@Description", value.Description);
this.AddSPStringParam("@Folder", value.Folder);
this.AddSPStringParam("@DocumentPath", value.DocumentPath);
this.AddSPFloatParam("@FileSizeInKB", value.FileSizeInKB);
this.AddSPParamOut("@DocId", 50);
this.AddSPReturnIntParam("@RetVal");
this.ExecuteSelectSP(spName);
var id = this.GetOutValueString("@DocId");
if (!string.IsNullOrEmpty(id))
value.Id = Guid.Parse(id);
response.Code = this.GetOutValueInt("@RetVal");
}
catch (Exception ex)
{
Utilities.Utils.Write(ex);
}
}
在我的存储过程中它是:
ALTER PROCEDURE [dbo].[xxxxxxxx]
@Id1 uniqueidentifier,
@Id2 uniqueidentifier,
@DocumentType varchar(50)=null,
@DocumentName varchar(100)=null,
@Format varchar(50)=null,
@DocumentPath varchar(256),
@Description varchar(250)=null,
@Folder varchar(30),
@FileSizeInKB float=null,
@DocId uniqueidentifier OUTPUT
这会抛出一个错误,指出无法将varchar转换为唯一标识符。是否可以替代AddSPStringParam,以便我可以直接传递Guid / uniqueidentifier而不是字符串?
您的AddSPStringParam
正在将参数作为varchar
添加到存储过程中。但是,您的存储过程需要uniqueidentifier
。
您将不得不创建一个新函数,添加SqlDbType.UniqueIdentifier
类型的参数。