实体框架外键

时间:2013-05-02 19:09:42

标签: entity-framework

我有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; }

}

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

2 个答案:

答案 0 :(得分:1)

延迟加载:

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

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

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

DbContext.ContextOptions.LazyLoadingEnabled = true;

渴望加载:

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

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

答案 1 :(得分: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;}
}