首页 > 代码库 > EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。
EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。
实现功能:查询单张表Student中返回指定的列
一:数据库表结构:
二:存储过程:
1 USE [AdventureWorksDW] 2 GO 3 /****** Object: StoredProcedure [dbo].[GetAllStudentInfo] Script Date: 2014/11/18 21:47:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- ============================================= 9 -- Author: 王光旭10 -- Create date: 2014-11-1811 -- Description: 返回Student表中指定的字段12 -- =============================================13 ALTER PROCEDURE [dbo].[GetAllStudentInfo]14 @stuName varchar(50)15 AS16 BEGIN17 SET NOCOUNT ON;18 select ID,Name,TID from Student --注意此处没有查表中的Age字段19 END
三:EF模型更新表和存储过程以及存储过程的函数导入
四:客户端调用
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data.Objects; 6 7 namespace ClassLibrary1 8 { 9 public class Class110 {11 public void accp()12 {13 awdEntities awd = new awdEntities();14 15 ObjectParameter[] para = new ObjectParameter[] 16 { 17 new ObjectParameter("stuName", "田三")18 };19 //QueryAllStudentInfo为导入存储过程制定的那个函数名称20 var list = awd.ExecuteFunction<Student>("QueryAllStudentInfo", para).ToList();21 }22 }23 }
此时问题就出来了:
解决办法:
此时客户端调用需要更改一下返回的数据类型:
1 using System.Text; 2 using System.Data.Objects; 3 4 namespace ClassLibrary1 5 { 6 public class Class1 7 { 8 public void accp() 9 {10 awdEntities awd = new awdEntities();11 12 ObjectParameter[] para = new ObjectParameter[] 13 { 14 new ObjectParameter("stuName", "田三")15 };16 //QueryAllStudentInfo为导入存储过程制定的那个函数名称17 //之前的数据返回类型Student更改为QueryAllStudentInfo_Result18 var list = awd.ExecuteFunction<QueryAllStudentInfo_Result>("QueryAllStudentInfo", para).ToList();19 }20 }21 }
问题就到此解决完毕。希望能帮到大家。
EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。