sql server 2008 -操作数类型冲突:int与唯一标识符不兼容
本文关键字:int 唯一 标识符 不兼容 冲突 2008 server 操作数 类型 sql | 更新日期: 2023-09-27 17:50:49
我在stackoverflow上尝试了许多解决方案,但没有一个给我一个解决方案,我有以下查询,它传递了三个参数
using (var sqlCon = new SqlConnection(Database.ReturnDatabaseConnection()))
{
var p = new DynamicParameters();
p.Add("@EmailAddress", emailAddress);
p.Add("@UserId", SqlDbType.BigInt, direction: ParameterDirection.InputOutput);
p.Add("@UniqueId", SqlDbType.UniqueIdentifier, direction: ParameterDirection.InputOutput);
var t = sqlCon.Execute("RequestPasswordReset", p, commandType: CommandType.StoredProcedure);
var b = p.Get<Int64>("@UserId");
var c = p.Get<Guid>("@UniqueId");
}
调用以下存储过程
ALTER PROCEDURE RequestPasswordReset
@EmailAddress varchar(320),
@UserId bigint output,
@UniqueId UniqueIdentifier output
AS
BEGIN
SET NOCOUNT ON;
SET @UserId = (Select ISNULL(Id, NULL) from [User].[User_Profile] where EmailAddress = @EmailAddress and ProfileStatus <> 5)
IF @UserId is not null
BEGIN
SET @UniqueId = NEWID()
INSERT INTO [Reset].[PasswordReset]
(UserId, UniqueId,
DateRequested, DateCompleted)
VALUES
(@UserId, @UniqueId, SYSDATETIME(), NULL)
END
如果用户存在,我将返回userId (bigint)和uniqueId (UniqueIdentifier)
当我到达c#项目
中的以下行时sqlCon.Execute("RequestPasswordReset", p, commandType: CommandType.StoredProcedure);
我得到这个问题的标题写的错误信息,有人能解释一下我在这里做错了什么吗?
表结构如下:
CREATE TABLE [Reset].[PasswordReset](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[UserId] [bigint] NOT NULL,
[UniqueId] [uniqueidentifier] NOT NULL,
[DateRequested] [datetime] NOT NULL,
[DateCompleted] [datetime] NULL,
CONSTRAINT [PK_Reset]].[PasswordReset] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
用户配置文件表
CREATE TABLE [User].[User_Profile](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[UniqueId] [uniqueidentifier] NOT NULL,
[Username] [varchar](25) NOT NULL,
[EmailAddress] [varchar](320) NOT NULL,
[Password] [varchar](200) NOT NULL,
[ProfileStatus] [int] NOT NULL,
CONSTRAINT [PK_User.User_Profile] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我也遇到了同样的问题。试试这个。它解决了我的问题。
p.Add("@UserId",null,dbType: DbType.BigInt, direction: ParameterDirection.Output);
p.Add("@UniqueId",null,dbType: DbType.Guid, direction: ParameterDirection.Output,size:40);
我猜Add
方法期望值作为第二个参数,在输出作为参数的情况下。