- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然我了解 ORM 和 DAL,并且之前已经使用 NHibernate 实现了 DAL,但我是 Dapper 的新手。
示例查询:-
string sql = "SELECT * FROM MyTable";
public int GetCount()
{
var result = Connection.Query<MyTablePoco>(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/
每当我这样获取时,我都会遇到异常 Feature f = o.Features.SingleOrDefault(e => e.LinkName == PageLink); 因为这可以返回一个或多个元素
SingleOrDefault返回null,但是如果我想分配值来表示未找到的对象怎么办? 最佳答案 你可以做类似的事情 myStrings.DefaultIfEmpty("myDefaultStrin
考虑一个在不同位置有多台计算机的环境。这些计算机运行着一个 Windows 应用程序,并有一个计时器每 5 分钟检查一次同步新数据。信息通过互联网连接同步到一个集中位置。客户端计算机和中央服务器上的数
我有一个调用 SingleOrDefault 方法 3 次并在任何序列具有多个匹配元素时记录异常的代码。 如果我想检查这段代码的哪一部分抛出异常,问题就开始了。 是否可以从此异常中获取一些有用的信息,
我的以下查询 var varUser = (from d in db.tblUsers where (d.ID == intID) select d).SingleOrDefault(); ret
我想让我的代码更好。我可以安全地将第一个示例重写为第二个示例吗? IQueryable pdfList = (from pdfobj in pdfDataContext.PDFs
我偶然发现了一个有趣的场景,但我找不到解决方案。假设我必须找到序列中的主数(至少出现 n/2 + 1 次的数字,其中 n 是序列的大小)。这是我的实现: public static int FindM
类似于this问题 - 编写 LINQ 的 SingleOrDefault 最惯用的方法是什么?在 F# 中? 最佳答案 如果您希望函数在序列为空时返回null(或值类型的默认值),只需继续并调用现有
我正在尝试执行以下操作... Request request = ( from r in db.Requests where r.Status == "Processing" &&
所以,如果我有一个像这样的简单类: class Color { public int ID { get; set; } public string ColorName { get; s
在我们的项目中,我经常遇到诸如“序列包含多个元素”之类的非信息性消息。它时常发生。 检查一下不是更好吗: var count = collection.Count(i => predicate); i
考虑这些代码行: //prodProdGroup is a list within the itm object that I need to search. The items //with
我回答了一些问题并在谷歌上搜索了一下,但我找不到答案(这让我很满意)。 基本上,我理解 SingleOrDefault 返回 null 或 0(取决于类型)。 但是我怎样才能让它返回其他东西呢? re
在 Typescript 中,我经常使用这种模式: class Vegetable { constructor(public id: number, public name: string)
我正在添加参数以将信息插入数据库并遇到潜在的空引用异常。通过使用 SingleOrDefault LINQ 表达式,我认为如果实例没有名为“Name”的 Tag,则 Tag 将默认为空值。只要实例具有
我有下面这行,但仍然得到一个异常“序列包含多个元素” Details rd = this.db.Details.SingleOrDefault(x => x.TId == Id && x.TypeId
我之前写的一些代码使用了 Find()通过主键检索单个实体的方法: return myContext.Products.Find(id) 这很有效,因为我将这段代码放入一个通用类中,并且每个实体都有一
我正在测试以下语句中是否存在用户记录: if (fromUser.AllFriends.Where(af => af.FriendUserID == toUserID).SingleOrDefault
对于上述和/或包括其他方法,如果您正在搜索一条记录,并且只有一条记录存在,那么哪一条执行速度最快?例如,我想确保一旦找到正在查询的值,我正在寻找一个能够立即返回该值而无需搜索剩余记录的值。 最佳答案
我正在使用 EF 开发 ASP.NET MVC 4.5 网站。我有代码检查数据库中的记录是否存在,如果不存在,则创建一个新记录。由于我的代码中存在问题(随后已修复),我在不到一秒的时间内调用了该代码两
我是一名优秀的程序员,十分优秀!