EF Core—查询数据

作者: JeetChan | 来源:发表于2019-04-18 20:07 被阅读0次

    查询数据

    Entity Framework(EF) Core 使用语言集成查询 (LINQ) 来查询数据库中的数据。 通过 LINQ 可使用 C# (或你选择的其
    他 .NET 语言)基于派生上下文和实体类编写强类型查询。 LINQ 查询的一种表示形式会传递给数据库提供程序,进
    而转换为特定于数据库的查询语言(例如,适用于关系数据库的 SQL )。有关 LINQ 的示例可参阅 101 LINQ Samples

    调用 LINQ 运算符时,只会构建查询在内存中的表示形式。 只有在使用结果时,查询才会发送到数据库。导致查询发送到数据库的最常见操作如下:

    • 在 for 循环中循环访问结果

    • 使用 ToList 、 ToArray 、 Single 、 Count 等操作

    • 将查询结果数据绑定到 UI

    执行查询

    通过 LINQ 可加载单个实体,使用导航属性来加载关联数据。也支持自定义查询结果。

    在无法使用 LINQ 表达要执行的
    查询或低效时,还可以使用原生 SQL 语句。

    同样的,有关查询的内容也挺多,可以快速浏览一遍,遇到模糊的就敲代码运行一次,让自己有一个直观的理解,并记住这一章的主要内容,当在实践应用时再通过看文档的详细信息。

    示例

    在学习或开发模式中,日志输出的 SQL 语句参数可设为可见options.EnableSensitiveDataLogging(true);,这样方便调试理解。

    在查询中参数应该设置为变量,否则是字面值的话发送到数据库的语句也是字面值,而不是参数。

    加载所有数据

    using (var context = new BloggingContext())
    {
          var blogs = context.Blogs.ToList();
    }
    

    加载单个实体

                int blogId = 1; // 变量
                using (var context = new BloggingContext())
                {
                    var blog = context.Blogs
                        .Single(b => b.BlogId == blogId);
                }
    

    筛选

                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Where(b => b.Url.Contains("dotnet")) // 字面值
                        .ToList();
                }
    

    加载关联数据

    可以使用 Include 方法来指定要包含在查询结果中的关联数据。使用 ThenInclude 方法可以依循关系包含多个层级的关联数据。

    using (var context = new BloggingContext())
    {
    var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .ThenInclude(post => post.Author)
    .ToList();
    }
    

    自定义查询结果

    List<dynamic> viewBlogs = context.Blogs
    .OrderByDescending(blog => blog.Rating)
    .Select(blog => new
    {
    Id = blog.BlogId,
    Url = StandardizeUrl(blog.Url)
    })
    .ToList();
    

    原生 SQL 语句

    var blogs = context.Blogs
    .FromSql("SELECT * FROM dbo.Blogs")
    .ToList();
    

    参考

    Entity Framework Core 2.x 入门 (完结)

    相关文章

      网友评论

        本文标题:EF Core—查询数据

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