2017-02-16 20 views
0

とデータリーダーの対応する列を持っていませんこんにちは、私はその上のエラーを取得していたデータ読み取り装置が、指定と互換性がありませんタイプのメンバー、「メソッド」は、同じ名前

を読み込み 'TestSearch_Result' タイプのメンバー 'Method'には、同じ名前のデータ リーダーに対応する列がありません。

私はこの問題を徹底的に調査し、数多くの解決策を試してみましたが、何も効果がありませんでした。どのような援助は素晴らしいことだ

定義テーブル

PK同上

FK CourseId

FK型ID

FK MethodId

名前

説明

のisActive

spTestSearch

USE [Project] 
GO 
/****** Object: StoredProcedure [dbo].[spTestSearch] Script Date: 2/15/2017 7:39:51 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author: Riley 
-- Create date: 2/15/2017 
-- Description: Search Attempt 2 
-- ============================================= 
ALTER PROCEDURE [dbo].[spTestSearch] 
-- Add the parameters for the stored procedure here 
@Name   NVARCHAR(50), 
@CourseIdList   XML, 
@TypeIdList    XML, 
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 * 
    FROM [Definition] ad 
     JOIN [Course] c ON ad.CourseId = c.Id 
     JOIN [Type] am ON ad.TypeId = am.Id 
    WHERE ad.IsActive = 1 AND 
    ((ISNULL(@Name, '') = '') OR (ad.Name Like '%'[email protected]+'%')) AND 
    ((@CourseIdList IS NULL) OR (ad.CourseId IN 
    (  SELECT Id 
      FROM dbo.fnIntTableFromXML(@CourseIdList) 
    ))) AND 
    ((@TypeIdList IS NULL) OR (ad.TypeId IN 
    (  SELECT Id 
      FROM dbo.fnIntTableFromXML(@TypeIdList) 
    ))) 

END 

Db.Model.Context.cs

public virtual ObjectResult<spTestSearch_Result> spTestSearch(string Name, string courseIdList, string TypeIdList) 
{ 
    var NameParameter = Name != null ? 
     new ObjectParameter("Name", Name) : 
     new ObjectParameter("Name", typeof(string)); 

    var CourseIdListParameter = courseIdList != null ? 
     new ObjectParameter("CourseIdList", courseIdList) : 
     new ObjectParameter("CourseIdList", typeof(string)); 

    var TypeIdListParameter = TypeIdList != null ? 
     new ObjectParameter("TypeIdList", TypeIdList) : 
     new ObjectParameter("TypeIdList", typeof(string)); 


    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<spTestSearch_Result>("spTestSearch", NameParameter, CourseIdListParameter, TypeIdListParameter); 
} 
+1

どのdbmsを使用していますか? (そのコードは製品固有のものです) – jarlh

答えて

2

あなたは、ストアドプロシージャ内のすべてのテーブルのすべてのフィールドを取得しているため、問題があることができ、それはdoesnのTestSearch_Resultオブジェクトのメンバと一致するフィールドを取得しません。この場合、 'Method'になります。

+0

あなたは問題であることがまさに正しいです!今私は、ストアドプロシージャのために 'Select *'を使用することが不適切であることを知っています。私のポストにupvoteを与えるPlz。あなたの洞察力はすごいです! – RyeGuy

関連する問題