Я создаю базу данных SQL, используя структуру сущностей и свободный API. По сути, в игре 2 игрока, и при создании игры будет назначен только Player1.
До сих пор я создал следующий код:
public class Game
{
public int ContextId { get; set; }
public DateTime DateStart { get; set; }
public DateTime? DateEnd { get; set; }
public virtual Player Player1 { get; set; }
public virtual Player Player2 { get; set; }
}
public class Player
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList<Game> Games { get; set; }
}
public void Configure(EntityTypeBuilder<Game> gameConfiguration)
{
gameConfiguration.ToTable("games", GameDbContext.DEFAULT_SCHEMA);
gameConfiguration.HasKey(c => c.ContextId).Metadata.AddAnnotation("DatabaseGenerated", DatabaseGeneratedOption.None);
gameConfiguration.Property(c => c.ContextId).ValueGeneratedNever();
gameConfiguration.Property(c => c.DateStart).IsRequired();
gameConfiguration.Property(c => c.DateEnd).IsRequired(false);
gameConfiguration.HasOne(c => c.Player1).WithMany(g => g.Games).HasForeignKey("ForeignKey_Game_Player1");
gameConfiguration.HasOne(c => c.Player2).WithMany(g => g.Games).HasForeignKey("ForeignKey_Game_Player2");
}
Я получаю исключение при запуске приложения.
InvalidOperationException: невозможно создать связь между
«Player.Games» и «Game.Player2», потому что уже есть
отношения между Player.Games и Game.Player1. навигация
свойства могут участвовать только в одном отношении.
Как мне этого добиться?