C# >;类型';ClassID';,数据中没有相应的列>;同名读取器

C# >;类型';ClassID';,数据中没有相应的列>;同名读取器,c#,sql,stored-procedures,sql-server-2012,subquery,C#,Sql,Stored Procedures,Sql Server 2012,Subquery,我创建了这个存储过程,它可能有点长,但仍然可以工作。然而,我正在使用实体框架来完成这个项目。但是,当它运行时,会出现以下错误: 类型的未处理异常 中发生“System.Data.EntityCommandExecutionException” System.Data.Entity.dll 附加信息:数据读取器与 指定的“SchoolsModel.TeacherClasseSorting_结果”。委员会成员 类型“ClassID”在数据中没有相应的列 具有相同名称的读取器 以下是我在SQL Ser

我创建了这个存储过程,它可能有点长,但仍然可以工作。然而,我正在使用实体框架来完成这个项目。但是,当它运行时,会出现以下错误:

类型的未处理异常 中发生“System.Data.EntityCommandExecutionException” System.Data.Entity.dll

附加信息:数据读取器与 指定的“SchoolsModel.TeacherClasseSorting_结果”。委员会成员 类型“ClassID”在数据中没有相应的列 具有相同名称的读取器

以下是我在SQL Server中创建的SP:

ALTER PROCEDURE [dbo].[TeacherClassesSorting] 
@ID int,
@sub int,
@frm int,
@trm int,
@yr nvarchar(15)
AS 
BEGIN
--SORTING BY ID ONLY
IF @trm IS NULL and @frm IS NULL and @sub IS NULL AND @yr IS NULL
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID 
ORDER BY AcademicYear DESC, c.FormID DESC
END

--Sorting by Year
ELSE IF @yr IS NOT NULL
BEGIN
--SORTING BY ID AND YEAR
IF @trm >0 and @frm IS NULL and @sub IS NULL
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID and c.AcademicYear = @yr and c.TermID = @trm
ORDER BY AcademicYear DESC, Form DESC
END

ELSE
IF @trm >0 and @frm >0 and @sub IS NULL
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID and c.AcademicYear = @yr and c.TermID = @trm AND C.FormID = @frm
ORDER BY AcademicYear DESC, Form DESC
END

ELSE
IF @trm >0 and @frm IS NULL and @sub >0
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID and c.AcademicYear = @yr and c.TermID = @trm AND C.SubjectCode = @sub
ORDER BY AcademicYear DESC, Form DESC
END


ELSE
IF @trm IS NULL and @frm IS NULL and @sub >0
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID and c.AcademicYear = @yr AND C.SubjectCode = @sub
ORDER BY AcademicYear DESC, Form DESC
END

ELSE
IF @trm IS NULL and @frm >0 and @sub >0
BEGIN
select c.ClassID as ID,sub.SubjectName as Subject, f.FormName as Form, trm.TermName as AcademicTerm , c.AcademicYear as AcademicYear
from Teachers as t inner join Classes as c on t.TeacherID = c.TeacherID 
              inner join Subjects as sub on sub.SubjectCode = c.SubjectCode
              inner join Terms as trm on trm.TermID = c.TermID
              inner join SchoolForms as f on f.FormID = c.FormID 
where         t.UserID = @ID and c.AcademicYear = @yr AND C.SubjectCode = @sub AND C.FormID = @frm
ORDER BY AcademicYear DESC, Form DESC
END

我是编程新手,所以请容忍我,我在这方面并不完美。有人能帮我吗。谢谢

添加从中获取错误的代码行。也许可以在存储过程中添加一条select语句,如果所有参数都为NULL(即默认值),则该语句将运行—如果trm为NULL,frm为NULL,sub为NULL,yr为NULL,ID为NULL,则在上面的代码段中,您所述的@Brendan有一条select语句