面试题精选08-EfCore中导航属性有哪些

EfCore中有三种导航属性,分别是集合导航属性、引用导航属性、反转导航属性。

集合导航属性

主表对子表数据的引用,通常用来表示一对多或多对多的关系。以下案例中,Blog表的Posts是集合导航属性,包含子表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; }
}

引用导航属性

子表对主表数据的引用,即一个实体引用另一个实体。以下案例中,Post表的Blog是引用导航属性,包含主表Blog中的关联数据。

public class Blog
{
    public int BlogId { get; set; }
    public string Url { 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; }
}

反转导航属性

一个实体导航属性对应的另一端实体的导航属性。以下案例中,Post.Blog是Blog.Posts的反转导航属性,反过来也一样。

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; }
}

posted @ 2024-11-21 15:27  相遇就是有缘  阅读(3)  评论(0编辑  收藏  举报