.Find(id)
之间是否存在显着差异和 .Where(x = >x.Id == id)
这应该迫使我使用 .Find()
在 .Where()/.First()
?
我会想象 .Find()
会更有效,但它是否更有效,我应该避免 .Where()/.First()
?
我问的原因是我在测试中使用了通用 FakeDbSet 来轻松实现假结果,到目前为止我发现我必须继承该类并提供 .Find()
的自定义实现。而如果我用 .Where()/.First()
写我的代码我不需要做那些额外的工作。
最佳答案
重点是find
首先在上下文的本地缓存中搜索,然后,如果不匹配,则向数据库发送查询。where
总是向数据库发送查询。
用EF 4.*,我以前以为是find
生成的sql太复杂,在某些情况下,会导致性能问题。所以我总是用 where
即使使用 EF 5。我应该检查 find
生成的 sql使用 EF 5。
所以在论文中,find
更好,因为他使用缓存。
关于.net - Entity Framework 查找与位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966213/