【问题标题】:Is is better to use Find() or Single() to select an item from the database? [duplicate]使用 Find() 或 Single() 从数据库中选择一个项目更好吗? [复制]
【发布时间】:2017-05-09 11:25:35
【问题描述】:

我正在制作一个 ASP.NET MVC 应用程序,对于像 EditDetails 这样需要单个项目的操作,使用 myDbContext.MyDbSet.Single(i => i.Id == id)myDbContext.MyDbSet.Find(id) 更好吗?后者更短,在我看来更简洁,不需要 Linq 方法,但我在 ASP.NET MVC 上阅读的资料似乎更喜欢前者。

我找不到查看实现的方法,但如果我不得不猜测,我会说Single() 可能会在某个地方使用Find(),这表明更多的方法调用和较低的效率/表现。我的想法对吗?

【问题讨论】:

标签: c# asp.net asp.net-mvc entity-framework linq


【解决方案1】:

主要区别在于Find()首先搜索DbContext的一级缓存。如果没有命中,它将查询数据库。 Single() 将始终查询数据库。除此之外,Find() 在未找到实体时返回 null。 Single() 会抛出异常。所以Find() 的等价物就是SingleOrDefault()

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2023-03-28
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    相关资源
    最近更新 更多