Maison > développement back-end > C++ > Comment définir manuellement les clés primaires dans Entity Framework tout en évitant les erreurs « IDENTITY_INSERT » ?

Comment définir manuellement les clés primaires dans Entity Framework tout en évitant les erreurs « IDENTITY_INSERT » ?

Linda Hamilton
Libérer: 2025-01-14 09:44:43
original
159 Les gens l'ont consulté

How to Manually Set Primary Keys in Entity Framework While Avoiding `IDENTITY_INSERT` Errors?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal