我有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对象。
答案 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;}
}