asp.net MVC 中的 SP 出现问题

本文关键字:问题 SP 中的 net MVC asp | 更新日期: 2023-09-27 17:55:42

我有 asp.net mvc 4 项目,尝试调用 T-SQL,我需要选择一些不是所有列的行

CREATE PROCEDURE [dbo].[SP_name]
@iSkip int, @iTake int
    AS
    BEGIN 
    SELECT [Column1], [Column2], [Column3] FROM [dbo].[Table] WITH(NOLOCK)
    ORDER BY 
     [Column1] DESC
OFFSET  @iSkip ROWS 
FETCH NEXT @iTake ROWS ONLY 
    END 

但是当我尝试从代码调用此 SP 时,出现以下错误

The data reader is incompatible with the specified 'Model.Table'. A member of the type, 'Column4', does not have a corresponding column in the data reader with the same name.

当我尝试在MS SQL Studio上调用它时,一切都很好,有人知道我的错误在哪里吗?我该怎么办?

编辑:

这是在存储库中:

public IEnumerable<T> GetAllEntitiesWithParam(string procedureName, int param1, int param2) {
            return _context.DbContext.Database.SqlQuery<T>("EXEC " + procedureName + " @param1, @param2", new SqlParameter("param1", param1), new SqlParameter("param2", param2));
        }

这是内部代码:

IEnumerable<Table> list = _myRepo.GetAllEntitiesWithParam("SP_name", par1, par2);

asp.net MVC 中的 SP 出现问题

错误似乎很明显 - 模型中有一个不在 sproc 结果集中的Column4。 您可以在 sproc 结果中添加一个"默认"值:

CREATE PROCEDURE [dbo].[SP_name]
@iSkip int, @iTake int
    AS
    BEGIN 
    SELECT [Column1], 
           [Column2], 
           [Column3],
           NULL AS [Column4]     // <----------------
    FROM [dbo].[Table] WITH(NOLOCK)
    ORDER BY 
     [Column1] DESC
OFFSET  @iSkip ROWS 
FETCH NEXT @iTake ROWS ONLY 
    END