美文网首页
2020-05-22 -- Linq查询提纲

2020-05-22 -- Linq查询提纲

作者: daiwei_9b9c | 来源:发表于2020-05-22 21:52 被阅读0次
  • 客户端与服务器评估

    • 顶级投影

    顶级投影中的客户端评估
    • 不支持的客户端评估

    Entity Framework Core 会阻止此类客户端评估,并引发运行时异常
    • 显式客户端评估

    显式方式强制进行客户端评估
  • 跟踪与非跟踪查询

    • 无健实体
    • 跟踪查询
    • 非跟踪查询
    • 标识解析
    • 跟踪和自定义投影
  • 复杂查询运算符

    • Join
    • GroupJoin
    • SelectMany
      • 集合选择器不引用外部
      • 集合选择器引用 where 子句中的外部
      • 集合选择器引用非 where 情况下的外部
    • GroupBy
    • Left Join
  • 加载相关数据

    https://docs.microsoft.com/zh-cn/ef/core/querying/related-data
    • 预加载

      • Include , ThenInclude
        a. 经过筛选的包含
        b. 派生类型上的包含
    • 显式加载

      • 查询相关实体
    • 延迟加载

      • 使用代理的延迟加载
        a. 安装 Microsoft.EntityFrameworkCore.Proxies
        b. 配置 DbContext 调用 UseLazyLoadingProxies 扩展方法
        c. 属性必须为 Virtual 且类可继承
      • 不使用代理的延迟加载
        a. 不需要属性为 Virtual 且不要求类可继承
    • 关联数据和序列化
      Json序列化时的可能的循环引用异常
      配置 JsonNet 忽略循环引用
      services.AddMvc() .AddJsonOptions( options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore );

  • 异步查询

    当在数据库中执行查询时,异步查询可避免阻止线程
    一组类似于 LINQ 方法的异步扩展方法
  • 原生 SQL 查询

    • 原始 SQL 查询可返回一般实体类型或者模型中的无键实体类型
    • 无法直接将一个 SQL 映射为一个普通类 ( 即不在 dbContext 使用 DbSet 定义的属性 )
    • 基本原生 SQL 查询
      var blogs = context.Blogs .FromSqlRaw("SELECT * FROM dbo.Blogs") .ToList();
    • 传递参数
var user = "johndoe";
var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogsForUser {0}", user)
    .ToList();

FromSqlInterpolated 和 ExecuteSqlInterpolated方法, 使用字符串内插语法,
但是 {} 通过 DbParamater 形式传递,而不是直接的字符串替代;
例如下面代码中的 user

var user = "johndoe";
var blogs = context.Blogs
    .FromSqlInterpolated($"EXECUTE dbo.GetMostPopularBlogsForUser {user}")
    .ToList();
  • 原生SQL结合LINQ 和 包含关联数据

  • 更改跟踪

  • 限制

  • 全局查询筛选器

    a. 定义查询筛选器
    modelBuilder.Entity<Blog>().Property<string>("_tenantId").HasColumnName("TenantId");
    // Configure entity filters
    modelBuilder.Entity<Blog>().HasQueryFilter(b => EF.Property<string>(b, "_tenantId") == 22);
    modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted);
    b. 禁用 查询筛选器
    c. 限制

  • 查询标记

不改变SQL的执行,而是在SQL中增加注释文本,多次调用将增加多行注释文本
IQueryable.TagWith(string tags) 方法

相关文章

  • 2020-05-22 -- Linq查询提纲

    客户端与服务器评估顶级投影顶级投影中的客户端评估不支持的客户端评估Entity Framework Core 会阻...

  • LINQ入门

    linq是语言集成查询。 linq to object :面向对象的查询。 linq to xml:针对xml查询...

  • Lession12-LINQ

    LINQ简介 编写一个扩展方法 LINQ查询方法 LINQ查询的延迟加载 Linq标准查询操作符 LinqToXML

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • LINQ

    什么是linq? linq是语言集成查询。 linq主要包含三部分 linq to xml linq to obj...

  • LINQ 简单使用

    语言集成查询 (LINQ) LINQ(Language Integrated Query)语言集成查询是一组用于 ...

  • Linq用法笔记

    一、什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成...

  • (转).NET面试题系列[14] - LINQ to SQL与I

    LINQ to Object和LINQ to SQL有何区别? LINQ to SQL可以将查询表达式转换为SQL...

  • linq延迟执行

    linq查询的两种方式 1.Method语法查询:主要利用system linq Enumerable类中定义的扩...

  • 四.SolidWorks 开发之Linq初探

    SolidWorks开发之Linq初探 一.何为Linq 语言集成查询(英语:Language Integrate...

网友评论

      本文标题:2020-05-22 -- Linq查询提纲

      本文链接:https://www.haomeiwen.com/subject/syicahtx.html