.net - Entity Framework 查找与位置

标签 .net performance entity-framework dbcontext

.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/

相关文章:

c# - wp8 应用程序互联网连接检查并防止未处理的关闭

java - 在 Java 中什么是更快地传递参数或使用静态变量?

java - 多次访问数组列表

c# - Entity Framework 复杂类型与创建新实体

c# - C#中的卡片打印

c# - 单元测试在 Thread.Sleep 时间之前完成

entity-framework - 复杂类型的 Entity Framework 列映射

c# - Entity Framework 最佳实践 : What layer should call SaveChanges()?

.net - WCF 客户端-服务器同步 : Polling vs. 绑定(bind)

c++ - 什么是好的游戏随机数生成器?