Как сказал, вы должны использовать оба.
Не забывайте, что вы манипулируете своей моделью и что это только абстракция объекта, а не то, как она хранится. Для TvShow естественно иметь свойство со списком сезонов, а для одного сезона - свойство, которое ссылается на родительский TvShow.
Единственная важная вещь, которую нужно знать в этих отношениях, это кто является хозяином, ответственным за обновление.
у вас должно быть что-то подобное:
public class TvShow
{
public int Id {get;set;}
public virtual ICollection<Season> Seasons {get;set;}
}
public class Season
{
public int Id {get;set;}
public int TvShowId {get;set;}
public virtual TvShow Show {get;set;}
}
Тогда вам следует помочь вашему сопоставлению с файлом конфигурации:
public class SeasonConfiguration : EntityTypeConfiguration<Season>
{
internal SeasonConfiguration()
{
this.HasRequired(s => s.Show)
.WithMany(tv => tv.Seasons)
.HasForeignKey(s => s.TvShowId);
}
}
Семантика не самая естественная, но работает так.
И если вы изучаете ASP.NET MVC, не забывайте, что то, что вы определяете здесь, это ваша модель и ваше отображение, оно должно отличаться от того, что вы хотите использовать в своих представлениях (то есть: ViewModel)