Maison >base de données >tutoriel mysql >Comment désactiver les clés générées automatiquement dans Entity Framework avec la saisie manuelle des touches ?

Comment désactiver les clés générées automatiquement dans Entity Framework avec la saisie manuelle des touches ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 18:57:44175parcourir

How to Disable Auto-Generated Keys in Entity Framework with Manual Key Input?

Remplacer les clés générées automatiquement par Entity Framework par une saisie manuelle

La gestion manuelle des clés primaires dans Entity Framework peut présenter des difficultés lorsque l'on tente de supprimer la génération automatique d'ID du framework. Ce guide aborde ce problème courant.

Le défi se pose lorsque l'on tente d'empêcher la génération automatique d'EventID à l'aide de HasDatabaseGeneratedOption(DatabaseGeneratedOption.None). Cela entre souvent en conflit avec le paramètre IDENTITY_INSERT dans SQL Server.

Résoudre le conflit :

Pour résoudre ce conflit, activez IDENTITY_INSERT pour la table concernée. Cela permet l'insertion manuelle de valeurs d'identité. Implémentez ceci dans votre constructeur DbContext :

<code class="language-csharp">using (var connection = Db.Database.Connection)
{
    var command = connection.CreateCommand();
    command.CommandText = "SET IDENTITY_INSERT Events ON";
    command.ExecuteNonQuery();
}</code>

Configuration de clé basée sur les attributs :

Vous pouvez également utiliser les attributs pour la configuration. Appliquez l'attribut suivant à votre EventID propriété :

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

Cette approche fonctionne de manière identique dans Entity Framework 6 et Entity Framework Core.

En incorporant ces modifications, vous pouvez désactiver efficacement la génération automatique de clé primaire et gérer manuellement les valeurs des entités d'événement.

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