操作数类型冲突:int与唯一标识符c#Dapper.Net不兼容
我在stackoverflow上尝试了很多解决方案,但没有一个给我一个解决方案,我有下面的查询,它传递了三个参数操作数类型冲突:int与唯一标识符c#Dapper.Net不兼容,c#,sql-server-2008,dapper,C#,Sql Server 2008,Dapper,我在stackoverflow上尝试了很多解决方案,但没有一个给我一个解决方案,我有下面的查询,它传递了三个参数 using (var sqlCon = new SqlConnection(Database.ReturnDatabaseConnection())) { var p = new DynamicParameters(); p.Add("@EmailAddress", emailAddress); p.Add("@UserId", SqlDbTy
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");
}
我得到的错误信息写为这个问题的标题,有人能解释我在这里做错了什么吗
表格结构如下:
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
方法期望值作为第二个参数,如果输出也是一个参数。数据库表中的UniqueId
列是如何定义的?@zoharpled作为uniqueidentifers这是hole过程吗?你能提供这个表的ddl吗?很抱歉,我仍然不能重现这个问题。当我在我的环境中尝试它时,一切似乎都正常工作(这是sql server 2012,但我不认为这是问题所在)。问题出在c#本身的某个地方,而不是存储过程中。@ZoharPeled是的,我已经做到了,它可以工作,所以它与c#应用程序有关
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);