プレイヤーのコレクションを持つエンティティ名簿があります。
public class Roster
{
public Roster()
{
Players = new List<Player>();
}
public int RosterId { get; set; }
[MaxLength(100)]
[Required]
public string RosterName { get; set; }
public ICollection<Player> Players { get; set; }
}
public class Player
{
public int PlayerId { get; set; }
[MaxLength(100)]
[Required]
public string PlayerName { get; set; }
public virtual ICollection<Roster> Rosters { get; set; }
}
流暢な API を使用して関係を定義しました
// many to many Roster - Players
modelBuilder.Entity<Roster>()
.HasMany(t => t.Players)
.WithMany(t=>t.Rosters)
.Map(m =>
{
m.ToTable("RosterPlayers");
m.MapLeftKey("RosterId");
m.MapRightKey("PlayerId");
});
このように選手を名簿に保存できます
var roster = rosterRepository.GetById(rosterId);
var player = playerRepository.GetById(playerId);
roster.Players.Add(player);
rosterRepository.Update(roster);
...
ただし、名簿を取得すると、プレーヤーのコレクションが読み込まれません。すべての適切な値でデータが存在することを確認し、次の sql はデータを生成します。
SELECT * from Rosters r
INNER JOIN RosterPlayers rp on r.RosterId = rp.RosterId
INNER JOIN Players p ON p.PlayerId = rp.PlayerId
私は何が欠けていますか?