【发布时间】:2016-12-05 09:08:33
【问题描述】:
我第一次尝试创建一个存储过程,但我做不到。所以我有一个proc,它根据提供给它的参数从数据库返回一个计数。我不确定我做错了什么,如果 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,从数据库更新模型,添加存储过程。 然后我转到模型浏览器中的函数导入,右键单击,添加函数导入。从下拉列表中选择存储的过程,单击“获取列信息”,然后按“创建新的复杂类型”。为事物命名,然后按 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
有没有人能告诉我我在这里做错了什么,为什么它不起作用?
【问题讨论】:
标签: c# sql-server entity-framework