c# - 使用 Find() 还是 Single() 从数据库中选择项目更好?

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

我正在制作一个 ASP.NET MVC 应用程序,用于类似 Edit 的操作或Details需要单个项目,使用 myDbContext.MyDbSet.Single(i => i.Id == id) 是否更好或myDbContext.MyDbSet.Find(id) ?后者更短,在我看来,更干净,不需要 Linq 方法,但我在 ASP.NET MVC 上阅读的资料似乎更喜欢前者。

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

最佳答案

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

关于c# - 使用 Find() 还是 Single() 从数据库中选择项目更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868537/

相关文章:

javascript - 在填写联系表单后,如何让用户返回到他们原来的页面?

asp.net - JQuery 的 $ 与 ASP.Net MVC 中 StringTemplate.Net 的 $ 冲突

c# - 使用拥有的类型时,Entity Framework Core 尝试连接到不存在的表

c# - 在 C# 中使用临时表

c# - 如何在 Xamarin Studio 的调试器中输入命令

asp.net - 如何通过 Twitter API 通过单笔交易删除多条推文?

asp.net-mvc - 对 IIS 上长时间运行的进程的担忧

c# - 在 C# 中将列表对象转换为 json

asp.net-mvc - jQuery UI 自动完成插件 - 问题

javascript - 从 ajax 获取数据到 mvc 操作