关于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 获取数据库 ...
随机推荐
- IDA Pro 权威指南学习笔记(九) - 数据搜索
Search -> Next Code 命令将光标移动到下一个包含指令的位置 Jump -> Jump to Function 命令可以打开所有函数,可以迅速选择一个函数并导航到该函数所在 ...
- 1、svn架设、基本命令
SVN是Subversion的简称,是一个开放源代码的版本控制系统.是一项十分基础,必须能够熟练使用的工具.Apache网站:https://subversion.apache.org/ 采用C/S模 ...
- angularjs之级联菜单
原理: 1.ng-options中val.id as val.name for val in cascading 将id的值赋给 mg-modelone2.在通过ng-change传给函数3.当一级下 ...
- leetcode572
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- Set8087CW
Set8087CWThis example accesses the Floating Point Unit (FPU) control register. Try turning floating ...
- C++STL:流迭代器
流迭代器是一种迭代器适配器.istream_iterator用于读取输入流,ostream_iterator用于写输出流.这些迭代器将它们所对应的流视为特定类型的元素序列.使用流迭代器时,可以用泛型算 ...
- Fresnel Reflection Shader
[Fresnel Reflection] One of the most used types of reflections is the Fresnel reflection. One of the ...
- Apache Hive (四)Hive的连接3种连接方式
转自:https://www.cnblogs.com/qingyunzong/p/8715925.html 一.CLI连接 进入到 bin 目录下,直接输入命令: [hadoop@hadoop3 ~] ...
- C#使用NPOI导出excel设置单元格背景颜色
ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.FillPattern = FillPattern.SolidForegrou ...
- Kafka总结的一张图