我正在尝试第一次创建存储过程,但我无法做到正确 . 所以我有一个proc,它根据输入的参数从db返回一个计数 . 我不确定我做错了什么,如果SQL错了或者我错误地映射了这个函数 . 这是我的SQL:
USE [AuditTracker_Codegen]
GO
/****** Object: StoredProcedure [dbo].[GetAllFindingsCount] Script Date: 05/12/2016 08:43:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GetAllFindingsCount](@ReportId int, @Priority int, @IsDeleted bit)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT COUNT(*)
from [dbo].[App_Finding] finding
WHERE finding.ReportId = @ReportId and finding.Priority = @Priority and finding.IsDeleted = @IsDeleted
END
首先,这个SQL查询看起来是否合适?我在SSMS中执行它似乎返回了正确的结果 .
然后我去VS,从数据库更新模型,添加存储过程 . 然后我转到模型浏览器中的Function Imports,右键单击Add Function Import . 从下拉列表中选择存储过程,单击“获取列信息”,然后按“创建新的复杂类型” . 给这个东西命名,然后按OK . 据我所知,那应该是它,对吧?还是我错了?
在我的代码中,我尝试
var context = new AuditTrackerDatabaseContext();
var findingsOne = context.GetAllFindingsCount_Result(report.ReportId,
(int) PriorityStatus.One, false).ToString();
这就是我得到上述错误的地方 . 当我在edmx上检查这个proc的映射细节时,它说
Maps to GetAllFindingsCount Column
Column1 : Int32 <- Column1
有人能告诉我这里我做错了什么,为什么它不起作用?
1 回答
您可能需要为计数值指定一个名称,如下所示: