IEnumerable<T> list注意事项
方法返回的时候 要设置用list会比较稳妥。
遇到的问题:
private IDbConnection GetConnection()
{
var dataSettingsManager = new DataSettingsManager();
var dataProviderSettings = dataSettingsManager.LoadSettings();
_con = new SqlConnection(dataProviderSettings.DataConnectionString);
if (_con.State != ConnectionState.Open)
{
_con.Open();
}
return _con;
}
/// <summary>
/// 分页 使用 DapperExtensions
/// </summary>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <param name="outTotal"></param>
/// <param name="expression"></param>
/// <param name="sortList"></param>
/// <returns></returns>
public IEnumerable<T> GetPageData(int pageNum, int pageSize, out int outTotal,
Expression<Func<T, bool>> expression = null, object sortList = null, IDbTransaction dbTransaction = null, int commandTimeout = 10)
{
IEnumerable<T> entities = null;
using (var con = GetConnection())
{
IPredicateGroup predicate = DapperLinqBuilder<T>.FromExpression(expression); //转换Linq表达式
IList<ISort> sort = SortConvert(sortList);//转换排序接口
if (sort == null || sort.Count == 0)
{
sort.Add(new Sort { PropertyName = "ID", Ascending = false });
//sort = new List<ISort>();
}
entities = con.GetPage<T>(predicate, sort, pageNum - 1, pageSize, dbTransaction, commandTimeout);
outTotal = con.Count<T>(predicate);
con.Close();
return entities.ToList();;
}
}
重点在这边
entities = con.GetPage<T>(predicate, sort, pageNum - 1, pageSize, dbTransaction, commandTimeout);
如果直接返回的话 里面的con状态已经被释放,所以会报错 con数据连接未初始化。
只要在后面加一个 tolist() 这样把结果先返回存到内存。
折腾了一天才发现这个问题
IEnumerable<T> list注意事项的更多相关文章
- IEnumerable<T> 的时候一个主意事项p
IEnumerator IEnumerable.GetEnumerator() { return _vtDataView.GetEnumerator(); } public IEnumerator&l ...
- .NET面试题系列[10] - IEnumerable的派生类
.NET面试题系列目录 IEnumerable分为两个版本:泛型的和非泛型的.IEnumerable只有一个方法GetEnumerator.如果你只需要数据而不打算修改它,不打算为集合插入或删除任何成 ...
- C#扫盲之:带你掌握C#的扩展方法、以及探讨扩展方法的本质、注意事项
1.为什么需要扩展方法 .NET3.5给我们提供了扩展方法的概念,它的功能是在不修改要添加类型的原有结构时,允许你为类或结构添加新方法. 思考:那么究竟为什么需要扩展方法呢,为什么不直接修改原有类型呢 ...
- EntityFrame Work 5 性能注意事项(转自MSDN)
1.简介 对象关系映射框架是一种在面向对象的应用程序中提供数据访问抽象的便捷方式.对于 .NET 应用程序,Microsoft 推荐的 O/RM 是实体框架.但任何抽象都要考虑性能. 本白皮书旨在介绍 ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- 【转载】C#扫盲之:带你掌握C#的扩展方法、以及探讨扩展方法的本质、注意事项
1.为什么需要扩展方法 .NET3.5给我们提供了扩展方法的概念,它的功能是在不修改要添加类型的原有结构时,允许你为类或结构添加新方法. 思考:那么究竟为什么需要扩展方法呢,为什么不直接修改原有类型呢 ...
- asp.net core swagger使用及注意事项
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.是一款RESTFUL接口的文档在线自动生成+功能测试软件.主要目的是构建标准的.稳定的.可重 ...
- 先说IEnumerable,我们每天用的foreach你真的懂它吗?
我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
随机推荐
- SQL SERVER 设置区别大小写
表格中字段设置大小写: --查询时修改 select * from info where name collate Chinese_PRC_CS_AS_WS = 'lily'; --或者修改表对大小写 ...
- Seurat | 单细胞分析工具
Seurat是一个老牌的单细胞分析工具了(satija的力作),我之前测试过,但是没怎么用. 最近发现这个工具又publish在了NBT上,所以很有必要看一下这篇文章. Integrating sin ...
- English trip V1 - B 22. Here,There and Everywhere 无处不在 Teacher:Taylor Key: Be + Ving
In this lesson you will learn to describe what you see. 课上内容(Lesson) # How's the weather today? 今天的天 ...
- xsd与xml和类(class)对象之间的互相转换
xsd与xml和类(class)对象之间的互相转换 . 第一:通过现有的已经写好的xsd来生成class(.cs)文件. 在您Visual Studio的安装目录下的SDKv2.0Bin中有个应用程序 ...
- LeetCode--404--左叶子之和
问题描述: 计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 方法:recursive class ...
- Confluence 6 应该如何在我的空间中组织内容
页面和博客 你在 Confluence 中创建的任何内容,从会议记录到回顾和任何中间的内容,不管来源是博客和页面. 你的主页将是任何访问你网站中的用户首先看到的内容.为了让用户更加容易的找到他们需要查 ...
- git 提交代码场景
1.首次提交代码到master git init git add . git commit -m '' git remote add origin +address git push -u origi ...
- js删除数组中元素的方法
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- 『TensorFlow』高级高维切片gather_nd
gather用于高级切片,有关官方文档的介绍,关于维度的说明很是费解,示例也不太直观,这里给出我的解读,示例见下面, indices = [[0, 0], [1, 1]] params ...
- 『TensorFlow Internals』笔记_系统架构
一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...