【问题标题】:Using Stored Procedure to get records from an SQL View in EF 6在 EF 6 中使用存储过程从 SQL 视图中获取记录
【发布时间】:2016-04-15 15:17:35
【问题描述】:

我在数据库中有一个存储过程 (SP),用于从视图中检索一些记录。当我测试 SP 时,它会返回一组有效的结果。但是,如果提供了相同的参数值,我无法使用 EF 在我的代码中设置任何结果 (Count=0)。这是我的代码:

SqlParameter dwid = new SqlParameter("DiscussionWallId", wallId);
SqlParameter pagesize = new SqlParameter("PageSize", 10);
SqlParameter pindex = new SqlParameter("PageIndex", pageIndex);

object[] parameters = new object[] { dwid, pagesize, pindex };

var entryviews = db.Database.SqlQuery<ViewEntryRecord>("EXEC FetchMainEntries  @DiscussionWallId, @PageSize, @PageIndex", parameters).ToList();

我找到了this thread,但SET FMTONLY OFF 对我不起作用。有什么帮助吗?

这里是 SP:

USE [CBV]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[FetchMainEntries]    
    @PageIndex INT,
    @PageSize INT,
    @DiscussionWallId INT
AS
IF 1=0 BEGIN
    SET FMTONLY OFF
END
SELECT .... //QUERY part starts here

【问题讨论】:

  • 您可以在数据库上运行分析器以查看查询在执行时的样子吗?

标签: c# sql-server entity-framework stored-procedures


【解决方案1】:

SO 中现有的解决方案都不适合我。只有以下对我有用:

var entryviews = db.Database.SqlQuery<ViewEntryRecord>("DECLARE @return_value int;
   EXEC @return_value = [dbo].[FetchMainEntries] @PageIndex = {0}, 
   @PageSize = {1}, @DiscussionWallId = {2}, @ChildSize={3};
   SELECT  'Return Value' = @return_value;", 
   pageIndex, 10, wallId, 2).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2019-11-09
    • 2013-12-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多