面试题精选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; }
}
人生如逆旅
我亦是行人