I would like to have multiple one-to-many relationships between two classes, unfortunately, when doing update database, I'm getting SqlException.
Introducing FOREIGN KEY constraint 'FK_Game_Player_PlayerTwoId' on table 'Game' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.)
Player class:
[Table("Player")]
public class Player
{
[Key]
public int Id { get; set; }
[Required]
[ConcurrencyCheck]
public string Name { get; set; }
public ICollection<Game>? CreatedGames { get; set; } = new Collection<Game>();
public ICollection<Game>? ParticipatedGames { get; set; } = new Collection<Game>();
}
Game class:
public class Game
{
[Key]
public int Id { get; init; }
public int PlayerOneId { get; init; }
[Required]
public Player PlayerOne { get; init; }
public int PlayerTwoId { get; init; }
[Required]
public Player PlayerTwo { get; init; }
[Required]
public ICollection<Round> Rounds { get; set; } = new HashSet<Round>();
}
OnModelcreating:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder));
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Player>().HasMany(c => c.CreatedGames).WithOne(g => g.PlayerOne).HasForeignKey(c => c.PlayerOneId);
modelBuilder.Entity<Player>().HasMany(c => c.ParticipatedGames).WithOne(g => g.PlayerTwo).HasForeignKey(c => c.PlayerTwoId);
}