2017-04-06 75 views
0

我有兩個表RoundGame。一輪比賽有很多,我想用一個Web API來獲得一輪比賽的所有比賽。實體框架Web API - 使用外鍵值獲取相關實體

這裏是我的班(簡化了這一問題的緣故)

namespace DataLayer.Entities 
{ 
    [Table("Games")] 
    public class Game : IEntity 
    { 
     public Guid Id { get; set; } 
     public int PlayerOneId { get; set; } 
     public int PlayerTwoId { get; set; } 
     public Guid RoundId { get; set; } 
     [ForeignKey("RoundId")] 
     public Round Parent { get; set; } 
    } 
} 

namespace DataLayer.Entities 
    { 
     [Table("Rounds")] 
     public class Round 
     {  
     public ICollection<Game> Games { get; set; }   
     public Guid Id { get; set; } 
     public bool HasStarted { get; set; } 
     public DateTime TimeStarted { get; set; } 
     public int RoundNumber { get; set; } 
     } 
    } 

我希望能夠在使用實體框架一輪ID傳遞,並從該輪得到的所有遊戲。

回答

1

如果您沒有啓用延遲加載,include包含在本輪中的遊戲。如果啓用延遲加載,則不需要include

Games可以通過其導航屬性進行訪問(假設關係在EF模型中正確設置)。

Guid roundId;  
var roundWithGames = dbContext.Rounds.Include(r => r.Games).SingleOrDefault(r => r.Id == roundId); 
if (roundWithGames == null) { throw new ArgumentException(nameof(roundId)); } 
var gamesOfRound = roundWithGames.Games;