I have two models using Entity Framework.
public class Player { public int PlayerId { get; set; } public string Name { get; set; } public string Sex { get; set; } public string Plays { get; set; } public string FavouriteSurface { get; set; } } public class SinglesMatch { public int SinglesMatchId { get; set; } public int Player1Id { get; set; } public int Player2Id { get; set; } public int PlayerIdWinner { get; set; } public DateTime Date { get; set; } public string Venue { get; set; } public string Score { get; set; } public List<Player> Players { get; set; } } I am using the below code to attempt to display the Name of the player, based on the PlayerId in the SinglesMatch model matching the PlayerID from the Player model.
@foreach (var item in @Model) { <ul id="Players" class="bg-success"></ul> <br/> <h3>Date - @Html.DisplayFor(@modelItem => item.Date)</h3> <li>Venue - @Html.DisplayFor(@modelItem => item.Venue)</li> <li>Player 1 - @Html.DisplayFor(@modelItem => item.Players.First(p => p.PlayerId == item.Player1Id).Name)</li> <li>Player 2 - @Html.DisplayFor(@modelItem => item.Players.First(p => p.PlayerId == item.Player2Id).Name)</li> <li>Score- @Html.DisplayFor(@modelItem => item.Score)</li> } Upon debugging, the navigation property is always showing as null when the model is retrieved from my repository.
Am I using the navigation property in the correct fashion ? is there a problem with my query ?
Edit to include DbContext:
public TennisTrackerContext() : base("name=TennisTrackerContext") { } public DbSet<Player> Players { get; set; } public DbSet<PlayerRecord> PlayerRecords { get; set; } public DbSet<SinglesMatch> SinglesMatches { get; set; } public DbSet<DoublesMatch> DoublesMatches { get; set; } public DbSet<Venue> Venues { get; set; } } }