Maison >développement back-end >C++ >Comment définir manuellement les clés primaires dans Entity Framework tout en évitant les erreurs « IDENTITY_INSERT » ?
Contourner l'incrémentation automatique dans Entity Framework : un guide pratique
La génération automatique de clé primaire d'Entity Framework peut être problématique lorsque vous devez attribuer manuellement des valeurs de clé. Cela conduit souvent à des conflits, comme le démontre l'erreur rencontrée lors de la tentative de contournement du comportement d'auto-incrémentation.
Initialement, le code suivant a été utilisé pour empêcher Entity Framework de gérer automatiquement la clé primaire :
<code class="language-csharp">modelBuilder.Entity<event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
Cependant, cela a entraîné un SqlException
: "Impossible d'insérer une valeur explicite pour la colonne d'identité dans la table 'Événements' lorsque IDENTITY_INSERT est défini sur OFF." En effet, le IDENTITY_INSERT
de la base de données est désactivé, empêchant l'insertion directe de valeurs dans les colonnes d'identité.
Une solution plus robuste utilise les attributs DataAnnotations pour une approche plus propre et plus compatible, notamment avec Entity Framework Core :
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int Id { get; set; }</code>
Cet extrait de code déclare la propriété Id
comme clé primaire ([Key]
) et désactive explicitement la génération automatique de valeur ([DatabaseGenerated(DatabaseGeneratedOption.None)]
). Cela permet une attribution manuelle de clé primaire tout en maintenant la compatibilité avec Entity Framework. Cette méthode évite efficacement le IDENTITY_INSERT
problème et fournit une solution plus élégante pour la gestion des clés primaires.
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!