关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
DBML:
[Function(Name="dbo.p_GetStudyStageSubjectGroup")]
public ISingleResult<STUDYSTAGE_SUBJECTGROUP__QRM> p_GetStudyStageSubjectGroup([Parameter(Name = "TimePoints", DbType = "DateTime")] System.Nullable<System.DateTime> timePoints)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), timePoints);
return ((ISingleResult<STUDYSTAGE_SUBJECTGROUP__QRM>)(result.ReturnValue));
}
后台.cs页面:
DataContextSetUp context = new DataContextSetUp();ISingleResult<STUDYSTAGE_SUBJECTGROUP__QRM> result = context.p_GetStudyStageSubjectGroup(DateTime.Now); this.ListView1.DataSource = result;this.ListView1.DataBind();
运行会报错:“无法枚举查询结果多次。”
查了国外的资料发现,因为linq to sql的ISingleResult<T>输出不能被列举计算大于1次。
比如当你绑定ISingleResult<T>到一个下拉框列表,结果被枚举计算并且下拉框增加了数据;然后如果你再次绑定同样的ISingleResult<T>实例到同一个控件,它会发现它的数据源和先前的一样(通过对象引用参照),最后它就不会再一次的枚举计算该ISingleResult<T>实例。
为了解决这个问题,现有两种方法可以提供:
1、实现自己的ISingleResult<T>
public class WrapperResult<T> : ISingleResult<T>
{
#region Fields List<T> results;
object returnValue; #endregion #region Constructor public WrapperResult(ISingleResult<T> inner)
{
results = inner.ToList();
returnValue = inner.ReturnValue;
} #endregion #region IEnumerable<T> Members public IEnumerator<T> GetEnumerator()
{
return results.GetEnumerator();
} #endregion #region IEnumerable Members IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)results).GetEnumerator();
} #endregion #region IFunctionResult Members public object ReturnValue
{
get { return returnValue; }
} #endregion #region IDisposable Members public void Dispose()
{
} #endregion
}
2、直接把ISingleResult<T>转换为.toList<T>()
DataContextSetUp context = new DataContextSetUp();List<STUDYSTAGE_SUBJECTGROUP__QRM> result = context.p_GetStudyStageSubjectGroup(DateTime.Now).ToList(); this.ListView1.DataSource = result;this.ListView1.DataBind();
关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题的更多相关文章
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
EF Core使用SQL调用返回其他类型的查询 假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...
- Linq to Sql : 动态构造Expression进行动态查询
原文:Linq to Sql : 动态构造Expression进行动态查询 前一篇在介绍动态查询时,提到一个问题:如何根据用户的输入条件,动态构造这个过滤条件表达式呢?Expression<Fu ...
- Linq to sql 接收存储过程返回的多个结果集
故事前提.......... 一.返回顺序结果集 存储过程实例 CREATE PROCEDURE MultipleResultTypesSequentially AS select * from pr ...
- LINQ to SQL 调用 SQL Server 的系统函数
Ø 简介 在 C# 中比较常用的 ORM(Object Relational Mapping)框架就是 EF 了,EF 经常结合 LINQ to SQL 来操作数据库.本文主要讨论如何在 LINQ ...
- SQL调用存储过程
--1调用存储过程exec 存储过程名 参数--2当表使用select a.*,b.* from tb b inner join (select * from openrowset('sqloledb ...
- SQL 调用存储过程
--1调用存储过程 exec 存储过程名 参数 --2当表使用 select a.*,b.* from tb b inner join ( select * from openrowset('sqlo ...
- Linq to sql 实现多条件的动态查询(方法一)
/// <summary> /// Linq to sql 多字段动态查询 /// </summary> /// <returns></returns> ...
- Linq to Entity调用存储过程【转】
http://www.cnblogs.com/chenxizhang/archive/2010/01/03/1638201.html
- EF Core使用SQL调用返回其他类型的查询
假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法是编写 ADO.NET 代码,并从 EF 获取数据库 ...
随机推荐
- shell 入门基础
一. Shell变量 1. 变量可分为两类: 环境变量(全局变量) 和 局部变量 . 环境变量 : 所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器.shell脚本和各类应用 . 环境 ...
- 腾讯安全反病毒实验室解读“Wannacry”勒索软件
背景 针对昨日英国医院被攻击,随后肆虐中国高校的 WannaCry 勒索事件,腾讯安全反病毒实验室第一时间给出了深度权威的分析.此次勒索事件与以往相比最大的亮点在于,勒索病毒结合了蠕虫的方式进行传播, ...
- 使用Vagrant创建多节点虚拟机集群
摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机.这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布 ...
- C# XML文件读取
using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; usin ...
- 解决linux下root运行Elasticsearch异常
如果以root身份运行将会出现以下问题 root@yxjay:/opt/elasticsearch-2.3.5/bin# ./elasticsearchException in thread &quo ...
- Linux内核SPI支持概述
1. 什么是SPI? Serial Peripheral Interface是一种同步4线串口链路,用于连接传感器.内存和外设到微控制器.他是一种简单的事实标准,还不足以复杂到需要一份正式的规范.SP ...
- 40行代码爬取猫眼电影TOP100榜所有信息
主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣ 基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...
- 10 华电内部文档搜索系统 search02
搜索项目并不是一个很大的项目,在实际项目中往往是作为子项目和别的项目集成在一起的.比如说和OA项目集成在一起,作为另外一个项目的子系统来使用.搜索项目的功能并不复杂. 整个项目是文档搜索项目,如题:企 ...
- Opencv Harris角点检测
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...
- iOS端一次视频全屏需求的实现(转)
对于一个带有视频播放功能的app产品来说,视频全屏是一个基本且重要的需求.虽然这个需求看起来很简单,但是在实现上,我们前后迭代了三套技术方案.这篇文章将介绍这三种实现方案中的利弊和坑点,以及实现过程中 ...