关于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 获取数据库 ...
随机推荐
- NodeJS写模块和引入模块的例子
nodejs自学.js function hello(){ console.log("hello world");} function s(){ console.log(" ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题
转自原文 xiaoanian, Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题 因为要做一个提取ppt文字的工程,第一 ...
- Spring cloud Eureka高可用 - Windows 7 hosts文件立即生效
hosts 文件所在位置 c:/windows/system32/drivers/etc/hosts 左下角 搜索框 搜索 cmd 弹出命令框 输入 ipconfig /displaydns 显示所有 ...
- 关于IP4上WIFI设置静态IP的一点经验
一开始我设置IP4的WIFI的"静态"IP地址后,又查看了一下"BootP"或者"DHCP"选项,然后保存退出(关键错误,后有说明),再进W ...
- [iOS]UIScrollView左右拨动,第二页宽度只有一半问题
用UIScrollView动态加入新View,而这个View是Xib方式创建,如果设置view的frame,这个view的宽度却只有设置的一半,很奇怪.于是我只设置view的frame的x值,不设置整 ...
- react.js 各种小测试笔记
首先看一个 基础html 至于其中的 js 问价大家去官网下载就好了. <html> <head> <script src="../build/react.j ...
- hibernate 反向生实体类 and 为什么老是多一个id
hibernate 反向生实体类 and 为什么老是多一个id 2017年04月01日 20:32:51 阅读数:548
- 71. Simplify Path压缩文件的绝对路径
[抄题]: Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/&q ...
- spring4-5-事务管理
1.简单介绍 事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的 ...