Maison >développement back-end >C++ >Comment gérer plusieurs clés étrangères à la même table dans le code Framework Entity Framework en premier?
Dans le noyau du cadre d'entité, il est essentiel de modéliser la relation inter-enthousiaste. Au fur et à mesure que vous rencontrez, la création d'un modèle avec plusieurs clés externes dans le même tableau peut provoquer des anomalies.
Dans votre exemple, vous définissez l'équipe et le match des entités pour capturer la relation entre l'équipe et le jeu. Cependant, votre méthode initiale déclenchera l'anomalie de référence du cycle.
Afin de résoudre ce problème, vous devez utiliser la configuration de l'API lisse de HasRequired () et Withmany () et de la méthode withmany (), ainsi que la méthode withmany () et la OnModelCreating (). Ceci est un modèle mis à jour:
dans ce modèle:
<code class="language-c#">public class Team { public int TeamId { get; set; } public string Name { get; set; } public virtual ICollection<Match> HomeMatches { get; set; } public virtual ICollection<Match> AwayMatches { get; set; } } public class Match { public int MatchId { get; set; } public int HomeTeamId { get; set; } public int GuestTeamId { get; set; } public float HomePoints { get; set; } public float GuestPoints { get; set; } public DateTime Date { get; set; } public virtual Team HomeTeam { get; set; } public virtual Team GuestTeam { get; set; } } public class Context : DbContext { // ... protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Match>() .HasOne(m => m.HomeTeam) .WithMany(t => t.HomeMatches) .HasForeignKey(m => m.HomeTeamId) .OnDelete(DeleteBehavior.Restrict); // or DeleteBehavior.NoAction modelBuilder.Entity<Match>() .HasOne(m => m.GuestTeam) .WithMany(t => t.AwayMatches) .HasForeignKey(m => m.GuestTeamId) .OnDelete(DeleteBehavior.Restrict); // or DeleteBehavior.NoAction } }</code>
Les entités de l'équipe comprennent deux compétitions: les maison de maison et les acteurs.
OnDelete(DeleteBehavior.Restrict)
DeleteBehavior.NoAction
. WillCascadeOnDelete(false)
empêchera les opérations de suppression, à moins que les enregistrements pertinents n'existent; Choisissez celui qui dépend de vos besoins spécifiques. OnDelete(DeleteBehavior.Restrict)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!