zoukankan      html  css  js  c++  java
  • 使用Entity Framework Core需要注意的一个全表查询问题

    .NET Core 迁移工作如火如荼,今天在使用 Entity Frameowork Core(又名EF Core)时写了下面这样的 LINQ 查询表达式:

    .Where(u => u.Id == new Guid(userId)).FirstOrDefaultAsync();

    结果在 SQL Server Profiler 中发现竟然进行了全表查询。

    之后将 new Guid(userId) 从表达式中移出,保存于一个局部变量中,使用这个局部变量进行查询,全表查询问题就解决了。

    var userGuid = new Guid(userId);
    var user = await users.Where(u => u.Id == userGuid).FirstOrDefaultAsync();

    同事之前也遇到了同样的问题,在表达式中调用计算时间的方法,也造成了全表查询。

    .Where(p => p.DateCreated > DateTime.Now.AddDays(-1))

    解决方法也是将之从表达式中移出。

    var startTime = DateTime.Now.AddDays(-1);
    Entities.Where(p => p.DateCreated > startTime);

    根据目前遇到的情况推测,很可能在 Entity Framework Core 中只要 LINQ 表达式有调用方法的操作就会造成全表查询,使用时一定要注意这个坑。

  • 相关阅读:
    VBA宏 合并EXCEL
    Opensource开源精神
    Redisd VS Memcached
    google-analytics.com
    Sybase PowerDesign 导入数据库结构formSqlserver
    Session Sticky About Nginx
    网站应用程式架构
    MapReduce形象总结
    Ubuntu升级内核
    ASP.NET5 MVC6入门教学之一(自己动手)
  • 原文地址:https://www.cnblogs.com/dudu/p/6291192.html
Copyright © 2011-2022 走看看