This is just something I did quickly, but it shows how I want it to be. OBS the database diagram table picture. So I want the Team
table to have two relationships with the Transfer
table (OldTeamId
, NewTeamId
), is this possible?
When I try to do the Add-Migration
as it looks now I get a message
Unable to determine the relationship represented by navigation property 'Team.OldTeams' of type 'List'. Either manually configure the relationship, or ignore this property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'
Code:
public class Transfer
{
public int Id { get; set; }
public DateTime TransferDate { get; set; }
public Player ThePlayer { get; set; }
public string PlayerId { get; set; }
public Team OldTeam { get; set; }
public int OldTeamId { get; set; }
public Team NewTeam { get; set; }
public int NewTeamId { get; set; }
}
public class Team
{
public Team()
{
Tournaments = new List<Tournament>();
Players = new List<TeamPlayer>();
OldTeams = new List<Transfer>();
NewTeams = new List<Transfer>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public byte[] TeamLogo { get; set; }
public DateTime Founded { get; set; }
public Country TheCountry { get; set; }
public int CountryId { get; set; }
public List<Tournament> Tournaments { get; set; }
public List<TeamPlayer> Players { get; set; }
public List<Transfer> OldTeams { get; set; }
public List<Transfer> NewTeams { get; set; }
}
public class GamepediaContext : DbContext
{
public DbSet<Country> Countries { get; set; }
public DbSet<Map> Maps { get; set; }
public DbSet<Player> Players { get; set; }
public DbSet<Team> Teams { get; set; }
public DbSet<TeamPlayer> TeamPlayers { get; set; }
public DbSet<Tournament> Tournaments { get; set; }
public DbSet<TournamentMap> TournamentMaps { get; set; }
public DbSet<Transfer> Transfers { get; set; }
}
[1]: https://i.sstatic.net/Y8Set.png
Use foreignKey Attribute
public class Transfer
{
public int Id { get; set; }
public DateTime TransferDate { get; set; }
public Player ThePlayer { get; set; }
public string PlayerId { get; set; }
public Team OldTeam { get; set; }
[ForeignKey("OldTeam")]
public int OldTeamId { get; set; }
public Team NewTeam { get; set; }
[ForeignKey("NewTeam")]
public int NewTeamId { get; set; }
}