目前,我正在尝试使用Dapper ORM与工作单元+存储库模式.
我想使用工作单元而不是简单的dapper存储库,因为我的插入和更新需要一定程度的事务处理.我一直无法找到任何有用的例子,因为大多数似乎使用实体框架并且在工作单元内存在泄漏问题.
有人可以指点我正确的方向吗?
我从Marc Gravell(@MarcGravell)那里读到了这个答案:https://stackoverflow.com/a/47790712/5779732
最后一行说:
作为代码的次要优化:首选AsList()到ToList()以避免创建副本.
该陈述是关于QueryMultiple()哪些回报GridReader.
在我的理解中,System.Linq提供了一种扩展方法IEnumerable.ToList().以下是从微软约ToList().
ToList(IEnumerable)方法强制立即进行查询评估并返回包含查询结果的List.您可以将此方法附加到查询中,以获取查询结果的缓存副本.
IDbConnection.Query()将永远返回IEnumerable或null.在调用代码时可以轻松完成空检查.那么有什么区别AsList呢?
如果我的理解是正确的,AsList将始终在内部调用ToList哪个将创建副本.
考虑到这一点,是AsList()不是更好ToList()用IDbConnection.Query(),它返回IEnumerable?如是; 为什么?
AsList()在这种情况下,内部是什么使它成为更好的选择?