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
您好,我有个人和护照实体。我在它们之间创建了一对一的关联,并且效果很好。我可以从 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