2016-12-05 5 views
0

初めてストアドプロシージャを作成しようとしていますが、それは正しい。だから私はそれに供給されているパラメータに基づいて、データベースからカウントを返すprocを持っています。私は、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に移動し、データベースからモデルを更新し、ストアドプロシージャを追加します。 次に、Model BrowserでFunction Importsを右クリックし、Add Function Importをクリックします。ドロップダウンリストからストアドプロシージャを選択し、「カラム情報を取得」をクリックし、次に「新しい複合タイプを作成」を押します。物に名前をつけて、OKを押します。私が知る限り、それはそうだろう、そう?または私は間違っていますか?

私のコードでは、私はその後、

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

を試してみて、私は上記のエラーを取得する場所です。私は、このprocのためにEDMXのマッピングの詳細を確認する場合は、

Maps to GetAllFindingsCount     Column 
Column1 : Int32      <-  Column1 

を言う、なぜそれが私がここで間違ってやっているものに私に助言することができ、誰働いていないされていますか?あなたはおそらくカウント値に名前を与える必要が

答えて

1

は、次のように:

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

おかげで、私はあることを試してみるとそれが動作するかどうか、あなたが知ってもらおう。 – necrofish666

+0

それは実際に働いた!いや、それはいつももっともシンプルなものだ。どうもありがとうございます。どのように私はその結果をintに変換するか考えていますか? (これはObjectResult です) – necrofish666

関連する問題