2016-12-05 1 views
0

Я пытаюсь создать хранимую процедуру в первый раз, но я просто не могу получить это правильно. Таким образом, у меня есть proc, который возвращает счет из db, основываясь на параметрах, которые ему подают. Я не уверен, что я делаю неправильно, если SQL неправильный или я неправильно отображаю функцию. Вот мой SQL:Ошибка C# MVC EF - считыватель данных несовместимый член типа не имеет соответствующего столбца в считывателе данных с тем же именем

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, обновляю модель из базы данных, добавляю хранимую процедуру. Затем я перехожу к функции Импорт в модельный браузер, щелкните правой кнопкой мыши, добавьте функцию импорта. Выберите сохраненный процесс в раскрывающемся списке, нажмите «Получить информацию о столбце», а затем нажмите «Создать новый сложный тип». Дайте устройству имя, затем нажмите ОК. Насколько я знаю, это должно быть так, не так ли? Или я ошибаюсь?

В моем коде я тогда попробовать

var context = new AuditTrackerDatabaseContext(); 
var findingsOne = context.GetAllFindingsCount_Result(report.ReportId, 
         (int) PriorityStatus.One, false).ToString(); 

И вот где я получаю ошибку выше. Когда я проверяю детали отображения на EDMX для этого прок, он говорит

Maps to GetAllFindingsCount     Column 
Column1 : Int32      <-  Column1 

ли кто-нибудь может сообщить мне о том, что я здесь делаю неправильно, почему это не работает?

ответ

1

Вы, вероятно, нужно, чтобы дать значение счетчика имя, например:

SELECT COUNT(*) AS RESULT_OF_COUNT 
from ... 
+0

Спасибо, я дам, что попробовать и пусть вы знаете, если это работает. – necrofish666

+0

Это действительно сработало! Черт возьми, это всегда самое простое. Огромное спасибо. Любая идея, как я преобразую результат этого в int? (это ObjectResult ) – necrofish666