Entity framework:一对一关系,能够双向导航

Entity framework: One to one relationship, being able to navigate for both directions

您好,我有个人和护照实体。我在它们之间创建了一对一的关联,并且效果很好。我可以从 Person 导航到 Passport,但是从 Passport 到 Person 返回 null。这是我做映射的方法:

modelBuilder.Entity<Person>().HasOptional(p => p.Passport)
.WithOptionalPrincipal(p => p.Person);

以下是实体:

public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string LastName { get; set; }

    public Passport Passport { get; set; }
}

public class Passport
{
    public int Id { get; set; }

    public string Number { get; set; }

    public Person Person { get; set; }
}

我应该怎么做才能双向导航?

您的问题是由于您缺少延迟加载的要求之一,即 "all navigation properties must be virtual"。如果 类 满足这些要求,Entity Framework 会为 POCO 实体创建代理,而这些代理 类 让您在 运行-tine 加载相关实体,也就是实施此操作的人名为 lazy loading

的功能

您将在以下内容中找到所有这些要求link