Maison >développement back-end >C++ >Comment modéliser une relation de partenariat avec deux clés étrangères de la même table dans le code Framework Entity Framework en premier?
Utilisation du code de framework physique Préféré: Créez deux clés externes à partir de la même table pour indiquer la relation de correspondance de l'équipe
Lorsqu'un débutant étudie la complexité du code du cadre physique, il a demandé des conseils pour définir un modèle efficace pour refléter la relation entre l'équipe et le jeu. Les exigences spécifiques sont que chaque jeu implique deux entités d'équipe différentes, qui sont spécifiées en équipes à domicile et en équipes invitées, et conservent les résultats du jeu.
Réponse:
Vous pouvez utiliser les méthodes suivantes pour construire le modèle requis:
Rebvention des attributs de classe d'équipe:
Supprimez la propriété ICOllection des matchs existants de la classe d'équipe.
Introduire deux nouvelles propriétés d'icollection: les articles de fonds et les acteurs.<code class="language-csharp">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; } }</code>
Modifiez la classe Match pour contenir les attributs de clé nécessaires et supprimez l'attribut des propriétés hometeam et invités.
Utilisez une API courante dans DBContex pour définir la relation de clé externe:[ForeignKey]
<code class="language-csharp">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(DbModelBuilder modelBuilder) { modelBuilder.Entity<Match>() .HasRequired(m => m.HomeTeam) .WithMany(t => t.HomeMatches) .HasForeignKey(m => m.HomeTeamId) .WillCascadeOnDelete(false); modelBuilder.Entity<Match>() .HasRequired(m => m.GuestTeam) .WithMany(t => t.AwayMatches) .HasForeignKey(m => m.GuestTeamId) .WillCascadeOnDelete(false); } }</code>Chaque entité de l'équipe doit avoir deux matchs, des manifestations de maison et des actions.
Utilisez une API CLUENT pour définir la relation de clé externe, car dans cette scène, la valeur par défaut convenue par la clé principale de mappage est insuffisante.
Désactivez la suppression de la classe pour empêcher l'accident de supprimer les équipes référencées par plusieurs matchs.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!