Maison >développement back-end >C++ >Comment définir manuellement les valeurs de clé primaire dans Entity Framework ?
Entity Framework : gestion manuelle des clés primaires
Entity Framework (EF) génère généralement automatiquement des valeurs de clé primaire. Cependant, il existe des situations où la spécification manuelle des clés primaires est nécessaire. Ce guide explique comment y parvenir.
Désactivation de la génération automatique de clés
Pour activer la saisie manuelle de la clé primaire, modifiez la méthode OnModelCreating
comme suit :
<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
Résoudre les conflits de colonnes d'identité
L'erreur « La colonne d'identité ne peut pas insérer de valeur explicite » se produit lorsque la propriété IDENTITY_INSERT
de la table est définie sur OFF
. Pour remédier à cela, définissez temporairement IDENTITY_INSERT
sur ON
avant d'insérer des données.
Configuration basée sur les attributs
Vous pouvez également utiliser des attributs pour définir les propriétés clés directement dans votre classe :
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
Cette méthode évite de modifier OnModelCreating
et est compatible avec EF Core.
Exemple de classe POCO mis à jour
La classe POCO suivante illustre l'approche basée sur les attributs :
<code class="language-csharp">public class Event { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; } public string EventType { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public virtual ICollection<Match> Matches { get; set; } public virtual ICollection<EventParticipation> EventParticipation { get; set; } }</code>
Cette approche offre une solution plus propre et plus maintenable pour gérer les clés primaires définies manuellement dans vos modèles EF.
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!