Entity Framework 中的导航属性有什么作用?

What do navigation properties do in Entity Framework?

我使用 EF6,这些是我的 POCO。

public class Author
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

public class Book
    {
        public int Id { get; set; }
        [Required]
        public string Title { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        public string Genre { get; set; }

        // Foreign Key
        public int AuthorId { get; set; }
        // Navigation property
        public Author Author { get; set; }
    }
  1. 导航有什么意义属性Author?
  2. 制作 属性 virtual 有什么意义?
  3. 导航属性是否特定于 Entity Framework?

编辑:经过更多研究,我发现 this thread,这很好地回答了我的第一个问题。

有人可以帮忙解决最后两个问题吗?

2:如果你做虚拟导航属性然后将工作这个 属性:

的延迟加载值
public class Book
{
    //...
    public int AuthorId { get; set; }
    public virtual Author Author { get; set; }
}

有效:EF 为您的实体(书籍)创建代理并覆盖导航 属性(作者)。当您加载导航 属性(作者)的数据库值的实体(书籍)时,不会加载。只有第一个获取导航值属性(Author),才会加载(http://blogs.msdn.com/b/adonet/archive/2009/12/22/poco-proxies-part-1.aspx).

3:固有的导航属性并不特定于 Entity Framework。这 link 到其他实体。但是术语 "navigation properties" 特定于 EF。