2

我有 2 节课

public class Person
{        
    public int Id { get; set; }        
    public string FirstName { get; set; }        
    public string LastName { get; set; }        
    public string Email { get; set; } 
}

public class PersonWebsite
{
    public int Id { get; set; }
    public string Website { get; set; }
    public int PersonId{ get; set; } 
}

我以前见过这样的事情

public class Person
{
    public int Id { get; set; }        
    public string FirstName { get; set; }        
    public string LastName { get; set; }        
    public string Email { get; set; } 

    public ICollection<PersonWebsite> PersonWebsites{ get; set; }

}

我怎么能去实现当一个人被初始化时,PersonWebsites List 将自动初始化并获取所有与调用它的类具有相同 PersonId 的 PersonWebsite 对象的代码。

4

2 回答 2

1

延迟加载:

您可以将PersonWebsites属性设为虚拟:

public virtual ICollection<PersonWebsite> PersonWebsites{ get; set; }

实体框架会在需要时立即从数据库中加载它。此方法还要求您启用默认情况下的延迟加载:

DbContext.ContextOptions.LazyLoadingEnabled = true;

急切加载:

您可以使用 include 强制实体框架加载PersonWebsites第一个查询:

DbSet.Include(p => p.PersonWebsites);

于 2013-05-02T19:30:48.420 回答
1

您可能还想像这样更改您的 PersonWebsite 类,以便从 PersonWebsite 对象导航到人员(使用延迟加载):

public class PersonWebsite
{
    public int Id { get; set; }
    public string Website { get; set; }
    [ForeignKey("Person")]
    public int PersonId{ get; set; } 
    public virtual Person Person {get;set;}
}
于 2013-05-02T19:41:37.923 回答