2016-12-03 5 views
0

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

Я получаю странную ошибку при попытке загрузить мои данные. При запросе моих команд атрибут Лиги равен нулю. Однако, если я запрашиваю свои лиги, а затем запрашиваю мои команды, атрибут Лиги загружается просто отлично. Что вызывает эту проблему и как ее исправить?

P.S. Я попытался удалить виртуальный ключ работы (для отложенной загрузки) не повезло

Метод

public async Task<IActionResult> GetTeam(){ 
    var x = await context.Teams.ToListAsync(); 
    // var y = await context.Leagues.ToListAsync(); Leagues show up with this 
    return Json(x); 
} 

Модели

public class League { 
    public int LeagueID { get; set; } 
    public string LeagueName { get; set; } 
    public virtual ICollection<Team> Teams { get; set; } 
    public League() { 
     Teams = new List<Team>(); 
    } 

} 

public class Team{ 
    public int TeamID { get; set; } 
    public string TeamName { get; set; } 
    public int LeagueID { get; set; } 
    [ForeignKey("LeagueID")] 
    public virtual League League { get; set; } 
    public Team() {} 
} 

Контекст

public class GameDbContext : DbContext{ 
    public GameDbContext(DbContextOptions<GameDbContext> options): base(options) { 
    } 
    public DbSet<League> Leagues { get; set; } 
    public DbSet<Team> Teams { get; set; } 

    protected override void OnModelCreating(ModelBuilder builder) { 
     builder.Entity<League>().ToTable("Leagues"); 
     builder.Entity<Team>().ToTable("Teams"); 
    } 
} 

Debug

без Y

enter image description here

с Y

enter image description here

+0

Вы уверены, что испробовали удаление виртуального ключевого слова из свойства вашей Лиги в классе Team? – CodingYoshi

ответ

1
context.Teams.Include(t=>t.League).ToListAsync() 

поможет вам лиге все время. Для этого вам необходимо добавить using System.Data.Entity;

+0

Странно, почему он не загружает Лигу самостоятельно? – John

+0

Замечательно, что это не так. Он избегает проблем с 1 + N запросов при ленивой загрузке. –

+0

Итак, я хочу привязать владельца к моей модели Team, и я хочу, чтобы Лига и Владелец. Должен ли я делать два запроса, или есть способ, которым я могу захватить как в одном запросе? Потому что, как вы только что видели ToListAsync, оставляет нулевые значения. – John

Смежные вопросы