Maison >base de données >tutoriel mysql >Comment définir manuellement les clés primaires dans Entity Framework sans erreurs ?

Comment définir manuellement les clés primaires dans Entity Framework sans erreurs ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-15 19:16:47514parcourir

How to Manually Set Primary Keys in Entity Framework without Errors?

Éviter les conflits de clés primaires dans l'approche Code-First d'Entity Framework

Dans le développement axé sur le code d'Entity Framework, la spécification manuelle des clés primaires peut parfois entrer en conflit avec la génération automatique des clés. Cela conduit souvent à des erreurs lors de la tentative d'insertion de données. Voyons comment éviter ces problèmes.

Une méthode consiste à désactiver la génération automatique de clés :

<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>

Cependant, cela peut déclencher l'erreur :

<code>Cannot insert explicit value for identity column in table 'Events' when IDENTITY_INSERT is set to OFF.</code>

La solution réside dans la définition correcte de la propriété de clé primaire au sein de votre classe POCO (par exemple, Event). Assurez-vous que votre déclaration de propriété comprend à la fois les attributs Key et Required :

<code class="language-csharp">[Key, Required]
public int EventID { get; set; }</code>

Vous pouvez également obtenir le même résultat en utilisant ces attributs :

<code class="language-csharp">[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }</code>

Cette approche est compatible à la fois avec Entity Framework et Entity Framework Core, offrant un moyen fiable de gérer les clés primaires attribuées manuellement.

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