J'ai une entité "lecteur" qui a une propriété "GUID" de la chaîne de type, avec la contrainte unique.
J'ai une entité "playerdata", qui a les propriétés "playerguid", "adponentplayerguid" de type String. P>
Comment utiliser EF Noyau pour vous assurer que la playerguid et les propriétés de playerguid et d'opponentPlayerguid acceptent les valeurs que trouvez uniquement à l'intérieur du joueur.Le Propriété? P>
J'ai essayé diverses choses, de probablement 5+ Réponses différentes sur Stackoverflow, dont aucun ne m'a aidé à travailler cela. p>
Entité de playerData p> entité du joueur p>
3 Réponses :
Vous devez spécifier une clé alternative sur le GUID. Puis configurez des clés étrangères. Faites-le en utilisant API fluide. Exemples d'utilisation ici: https://docs.microsoft.com / FR-US / EF / Core / Modélisation / Touches alternatives . p>
Dans votre classe dbcontext:
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<PlayerData>() .HasOne(e => e.Player) .WithMany() // If its a one to one relationsship, specify 'WithOne()' here .HasForeignKey(e => e.PlayerGuid) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<PlayerData>() .HasOne(e => e.OpponentPlayer) .WithMany() .HasForeignKey(e => e.OpponentPlayerGuid) .OnDelete(DeleteBehavior.Restrict); }
Si cela ne vous dérange pas que je demande, y a-t-il une raison particulière pour laquelle vous n'utilisez pas ID pour référencer le joueur et l'adhésion à l'adhésion? Ensuite, vous pouvez utiliser la clé étrangère pour référencer la table des joueurs. P>
GUID est le champ / la propriété qui est utilisé pour suivre les entrées dans la DB.
Je pense que Playerguid est le candidat principal principal et la conception sera plus simple si cela est utilisé comme clé primaire.