我正在制作一个 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/