2013-05-02 3 views
2

Я 2 классарамки Entity внешнего ключа

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 будет автоматически инициализирован и получит все PersonWebsite obje cts, которые имеют тот же PersonId, что и класс, который его вызывает.

ответ

1

Ленивая Загрузка:

Вы можете сделать PersonWebsites свойства виртуальным:

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

Entity Framework будет загружать его из базы данных, как только это потребуется. Кроме того, этот метод требует, чтобы отложенная загрузка включена, который по умолчанию:

DbContext.ContextOptions.LazyLoadingEnabled = true;

Нетерпеливая Загрузка:

Вы можете использовать, включают, чтобы заставить рамки сущности загрузить PersonWebsites на первый запросе:

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

+0

Когда я загружаю лицо, использующее uow.People.GetById (ID); сайты являются нулевыми? Нужно ли добавлять что-либо в таблицу базы данных? –

+0

Установили ли вы отношения 'Person' и' PersonWebsites'? Если не ответ Эндрю, это все. Затем в вашем DbContext вы можете использовать 'People.Include (p => p.PersonWebsites) .Find (id)' –

1

Вы также можете изменить свой PersonWebsite класс л икэ это для того, чтобы ориентироваться на человека от PersonWebsite объекта (с помощью Ленивый-Loading):

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;} 
} 
Смежные вопросы