c# 您所在的位置:网站首页 tail命令能求count吗 c#

c#

2024-06-22 11:46| 来源: 网络整理| 查看: 265

虽然我了解 ORM 和 DAL,并且之前已经使用 NHibernate 实现了 DAL,但我是 Dapper 的新手。

示例查询:-

string sql = "SELECT * FROM MyTable"; public int GetCount() { var result = Connection.Query(sql).Count(); return result; }

Dapper 会将此查询(内部)转换为 SELECT COUNT(*) FROM MyTable 最后查看 .Count() 吗?

同样,在 SingleOrDefault() 的情况下,它会转换为 SELECT TOP 1 * FROM MyTable 吗?

我来自 NHibernate 世界,它会相应地生成查询。不过我不确定 Dapper。当我使用 MS Access 时,我看不到检查生成的查询的方法。

最佳答案

不,dapper 不会调整您的查询。直接告诉这个的方法很简单:方法是否返回 IEnumerable...对比IQueryable... ?如果是第一个,那么它只能使用本地内存机制。

具体来说,默认,Query实际上会返回一个完全填充的 List . LINQ 的 Count()方法识别并访问 .Count列表的属性。所以所有的数据都是从数据库中获取的。

如果你想向数据库询问计数,向数据库询问计数。

至于查看实际发送到数据库的内容的机制:我们为此使用 mini-profiler。效果很好。

注意:当您只查询一行时:QueryFirstOrDefault (以及您期望的其他变体)存在并在内部进行了优化(包括对 ADO.NET 的提示,尽管并非所有提供程序都可以对这些事情采取行动)以尽可能高效地做事,但它不会 调整您的查询。在某些情况下,提供者本身(不是小巧的)可以提供帮助,但最终:如果您只想要第一行,向数据库询问第一行(TOP 或类似的)。

关于c# - Dapper.NET 如何在内部使用 .Count() 和 SingleOrDefault()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956149/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有