码迷,mamicode.com
首页 > 其他好文 > 详细

EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。

时间:2014-11-19 07:04:30      阅读:3066      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

实现功能:查询单张表Student中返回指定的列

一:数据库表结构:

bubuko.com,布布扣

二:存储过程:

 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-18
11 -- Description:    返回Student表中指定的字段
12 -- =============================================
13 ALTER PROCEDURE [dbo].[GetAllStudentInfo]
14     @stuName varchar(50)
15 AS
16 BEGIN
17     SET NOCOUNT ON;
18     select ID,Name,TID from Student        --注意此处没有查表中的Age字段
19 END

三:EF模型更新表和存储过程以及存储过程的函数导入

bubuko.com,布布扣bubuko.com,布布扣

bubuko.com,布布扣

四:客户端调用

 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 Class1
10     {
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 }

此时问题就出来了:

bubuko.com,布布扣

解决办法:

bubuko.com,布布扣bubuko.com,布布扣

此时客户端调用需要更改一下返回的数据类型:

 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_Result
18             var list = awd.ExecuteFunction<QueryAllStudentInfo_Result>("QueryAllStudentInfo", para).ToList();
19         }
20     }
21 }

问题就到此解决完毕。希望能帮到大家。

EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/wgx0428/p/4107080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!