This is my first question on the website, so if something seems off or the syntax isn't quite right, please let me know!
The schema below allows a player to join a profile using the many-to-many table profile-player.
The table profile-player contains a composite key for player and profile using their associated primary keys. This allows players to be part of 0 or more profiles and a profile to contain 0 or more players.
This works fine, but when normalizing the data and expanding it into something like profile-player-inventory, it's using the primary keys of the profile and player table when I want it to use the composite keys from the profile-player table. I need it to use the composite key from the profile-player as it will cascade delete other rows such as in profile-player-inventory when the relationship is broken.
I've tried using the FluentAPI that EF Core provides to set its relationship, but I don't see any setting to physically change it to use the profile-player table's foreign key. It only allows me to set it to the profile or player table as shown below.
public sealed class ProfilePlayerInventoryConfiguration : IEntityTypeConfiguration<ProfilePlayerInventoryEntity>
{
public void Configure(EntityTypeBuilder<ProfilePlayerInventoryEntity> builder)
{
builder.ToTable("profile_player_inventory");
builder.HasKey(x => new { x.PlayerId, x.ProfileId });
builder.HasOne(x => x.Profile).WithMany(x => x.ProfilePlayerInventorySet);
builder.HasOne(x => x.Player).WithMany(x => x.ProfilePlayerInventorySet);
}
}

In the end, the fix was pretty straight forward.
I decided to change my
profile-playertable to be an auto-incrementing key with theplayer-idandprofile-idbeing unique indexes instead.The
profile-player-inventorynow references theprofile-playeras I wanted it to as in the picture attached.Solution