• EF Core导航属性


    引用:http://www.manongjc.com/detail/13-lwkhruhnyywibmi.html

    文地址:https://www.jianshu.com/p/c6896a651cfb

    EF Core导航属性分为三种:
    集合导航属性:主表中对子表相关数据的引用
    引用导航属性:子表中对主表数据的引用
    反转导航属性:一个导航属性对应的另一端的导航属性
    微软的示例:
    Blog是主表,Post是子表

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }
    
        public List<Post> Posts { get; set; }
    }
    
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    
        public int BlogId { get; set; }
        public Blog Blog { get; set; }
    }
    

    在以上实体类的定义中:
    Blog.Posts是集合导航属性,包含子表中的关联数据。
    Post.Blog是引用导航属性,包含主表中的关联数据。
    Post.Blog是Blog.Posts的反转导航属性,反过来也一样。
    通过子表查询主表数据:
    var post=db.Posts.Include("Blog").First();
    可以访问到Blog表的其它字段:
    Console.Write(post.Blog.Url)
    通过主表访问子表数据:
    var blog=db.Blogs.Include(b=>b.Posts).First();
    可以访问子表相关的所有数据:

    foreach(var post in blog.Posts)
    {
        Console.Write(post.Title);
    }
    

    通过引用导航属性访问主表数据,不需要额外定义。
    通过集合导航属性访问子表数据,需要使用Fluent API配置。重写数据上下文的OnModelCreating方法,加入以下代码:

    builder.Entity<Post>()
            .HasOne(post => post.Blog)
            .WithMany(bolg => blog.Posts);
    

    如果不使用Fluent API进行配置,执行var blog=db.Blogs.Include(b=>b.Posts).First();时会报数据库语法错误。

    1. 1.使用ToTraceString()方法得到EF查询所生成的SQL方法代码如下

      efcore 如何查看生成的sql
    2.  

      2.生成的SQL为如下代码

      efcore 如何查看生成的sql
    3.  

      3.调用DbQuery<>的ToString()方法得到所生成的SQL的方法代码

      efcore 如何查看生成的sql
    4.  

      4.生成的SQL是如下代码

      efcore 如何查看生成的sql
    5.  

      5.在.NET Reflector得到的实现是这样的如下代码

      efcore 如何查看生成的sql
    6.  

      6.实现查ef生成sql的例子如下方法代码

      efcore 如何查看生成的sql
      efcore 如何查看生成的sql
    7.  

      7.输出的结果如下

      efcore 如何查看生成的sql
      efcore 如何查看生成的sql
  • 相关阅读:
    使用springboot遇到的问题
    npm使用出现的问题
    ORACLE遇到的新知识
    使用linux
    解释ArrayList的源码
    git的基础知识(并不是直接照着抄写的,用到的写过来)
    使用github遇到的问题
    java将数据库中菜单表中内容转化成一个导航树
    使用python自动发放员工工资条到个人邮箱
    zabbix图形中文乱码
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15800257.html
Copyright © 2020-2023  润新知