Maison >base de données >tutoriel mysql >Comment éviter les erreurs « Impossible d'insérer une valeur explicite pour la colonne d'identité » lors de la définition manuelle des clés primaires dans Entity Framework ?

Comment éviter les erreurs « Impossible d'insérer une valeur explicite pour la colonne d'identité » lors de la définition manuelle des clés primaires dans Entity Framework ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-15 19:07:43232parcourir

How to Avoid

Résolution des problèmes de saisie manuelle de clé primaire dans Entity Framework

L'attribution manuelle de clés primaires dans Entity Framework peut entraîner des erreurs de clé générées par la base de données. Cet article présente une solution utilisant des attributs pour éviter ces problèmes.

L'utilisation directe de l'attribut [NotMapped] est déconseillée. Bien que DatabaseGeneratedOption.None semble être une alternative viable pour empêcher la génération automatique de clé, il génère souvent une erreur « Impossible d'insérer une valeur explicite pour la colonne d'identité ».

La solution consiste à activer l'insertion explicite dans les colonnes d'identité à l'aide de l'option de table IDENTITY_INSERT :

<code class="language-sql">ALTER TABLE Event SET IDENTITY_INSERT ON;</code>

Cela résout le conflit. Alternativement, les attributs offrent une approche plus propre :

<code class="language-csharp">using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }</code>

Cette méthode basée sur les attributs est compatible avec Entity Framework Core. En utilisant soit DatabaseGeneratedOption.None soit l'approche par attributs, les développeurs peuvent gérer efficacement les affectations manuelles de clés primaires dans Entity Framework.

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!

Déclaration:
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