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 ...
随机推荐
- Hibernate二级缓存 --Hibernate框架
Hibernate本身只提供了二级缓存的规范,但并未实现,所以需要第三方缓存插件的支持.常用的二级缓存第三方插件有:EHCache.Memcached.OSCache.SwarmCache.JBoss ...
- 使用visual studio把xsd文件转成xml格式文件
使用visual studio把xsd文件转成xml格式文件 最近一段时间都在做Amazon的mws api的对接工作,mws api的描述文件都是使用的xsd文件来进行的,之前确实也没有接触过,也花 ...
- Lab 1-4
Analyze the file Lab01-04.exe. Questions and Short Answers Upload the Lab01-04.exe file to http://ww ...
- 20171023xlVBA递归统计WORD字数
Dim dFilePath As Object, OneKey Sub main_proc() Dim Wb As Workbook, Sht As Worksheet, Rng As Range S ...
- 20170906xlVBA_CopyDataAndFormatFromSheets
Public Sub GatherDataInSameWorkbook() AppSettings ' On Error GoTo ErrHandler Dim StartTime, UsedTime ...
- hdu-5985 概率DP
http://acm.hdu.edu.cn/showproblem.php?pid=5985 作为队里负责动态规划的同学,做不出来好无奈啊.思考了一个下午,最好还是参考了别人的思想才写出来,数学啊!! ...
- How-to: Use HBase Bulk Loading, and Why
How-to: Use HBase Bulk Loading, and Why http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk- ...
- 集合 (set)
set 是一个无序不重复的元素集,集合跟字典是无序的,不支持索引 创建集合: 第一种方式:通过{ }创建 >>> num={1,2,3,4,3,3,1} >>> n ...
- LOJ6072苹果树
虽然结合了很多算法,但是一步一步地推一下还不算太难的一道题. 首先考虑枚举枚举有用的苹果的集合,然后去算生成树个数. 先考虑怎么计算生成树个数. 发现可以使用matrix-tree. 所有有用点可以和 ...
- [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.
待解决 [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. ...