Maison >développement back-end >C++ >Comment définir manuellement les valeurs de clé primaire dans Entity Framework ?

Comment définir manuellement les valeurs de clé primaire dans Entity Framework ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-14 06:59:45500parcourir

How to Manually Set Primary Key Values in 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!

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