【问题标题】:Issue with SP in asp.net mvcasp.net mvc 中的 SP 问题
【发布时间】:2014-04-01 12:56:59
【问题描述】:

我有 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);

【问题讨论】:

  • 您将需要显示用于调用存储过程的代码。
  • @Paddy 更新我的问题
  • 它说Column4 不存在。更新您的查询并在选择和检查中添加[Column4]
  • @Bharadwaj 我理解错误,我不知道该怎么办。
  • @BorHunter SELECT [Column1], [Column2], [Column3],[Column4] FROM [dbo].[Table](也选择Column4

标签: c# asp.net sql asp.net-mvc tsql


【解决方案1】:

错误似乎很明显 - 您的模型中有一个 Column4 不在存储过程的结果集中。您可以在存储过程结果中添加一个“默认”值:

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 

【讨论】:

  • 如果我将此列称为 SELECT [Column1], [Column2], [Column3], [Column4] 是否相同?
  • @BorHunter 否。在这种情况下,您将获得 Column4 中的任何值。
  • 我的意思是从生产力方面,而不是从数据方面。
  • 不确定我是否关注,但Column4 将是从存储过程返回的集合中的一列,所以是的,您可以使用SELECT 拉取它。
  • 感谢您的回复,非常有趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2021-11-01
相关资源
最近更新 更多