使用 Dapper 时返回重复值

问题描述 投票:0回答:1

我用 Dapper 调用存储过程
存储过程返回一个可分页列表
我的数据库中有30条记录
但每一系列的重复值都会被返回

IEnumerable<TEntity> entities;
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@page", page, DbType.Int32, ParameterDirection.Input);
parameters.Add("@pageSize", pageSize, DbType.Int32, ParameterDirection.Input);
parameters.Add("@search", search, DbType.String, ParameterDirection.Input);
try
{
    _connection.Open();
    entities = await _connection.QueryAsync<TEntity>($"{storedProcedure}", parameters);
}
catch (Exception)
{
    return null;
}
finally
{
    _connection.Dispose();
    _connection.Close();
}

return entities.ToList();

及储存程序:

ALTER   PROCEDURE [dbo].[SP_GetCategories]
    @search nvarchar(300)='',
    @page int=1,
    @pageSize int=10
AS
BEGIN
set @page = (@page - 1) * @pageSize;
Declare @Sql Nvarchar(800)
Set @Sql=' select * from Dy.Category As C With(Nolock) where  IsDeleted=0 ';
        IF @search Is Not Null And @search <> ''
        BEGIN
        Set @Sql=@Sql+' AND C.Title like N''%''' +@search +'''%'' ' ;
        END
Set @Sql=@Sql +' Order By CreateTime Desc OFFSET '+CAST(@page AS NVARCHAR(100))+

' ROWS FETCH NEXT ' +CAST(@pageSize AS NVARCHAR(100))+' ROWS ONLY';
EXEC sp_executesql @Sql
END
c# sql-server asp.net-core .net-core dapper
1个回答
0
投票

我找到了问题的答案 它也可能对你有帮助 我定义了命令类型: CommandType.StoredProcedure

 entities = await _connection.QueryAsync<TEntity>($"{storedProcedure}", parameters,commandType:CommandType.StoredProcedure);

© www.soinside.com 2019 - 2024. All rights reserved.