Heim >Backend-Entwicklung >C++ >Wie kann verhindert werden, dass Entity Framework automatisch Primärschlüssel generiert?

Wie kann verhindert werden, dass Entity Framework automatisch Primärschlüssel generiert?

Barbara Streisand
Barbara StreisandOriginal
2025-01-14 09:56:43441Durchsuche

How to Prevent Entity Framework from Automatically Generating Primary Keys?

Unterdrückung der automatischen Primärschlüsselgenerierung im Entity Framework

Der Code-First-Ansatz von Entity Framework generiert häufig automatisch Primärschlüssel, insbesondere automatisch inkrementierende Identitätsspalten. Dieses automatische Verhalten ist nicht immer geeignet. In diesem Artikel wird beschrieben, wie Sie diese Standardfunktionalität überschreiben können.

Ein gängiger Ansatz verwendet eine fließende API-Konfiguration:

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

Dies kann jedoch zu folgendem Fehler führen: „Der explizite Wert für die Identitätsspalte in der Tabelle ‚Ereignisse‘ kann nicht eingefügt werden, wenn IDENTITY_INSERT auf OFF gesetzt ist.“

Den Fehler verstehen

Dieser Fehler entsteht durch einen Konflikt. DatabaseGeneratedOption.None verhindert, dass EF IDs generiert, aber die Datenbanktabelle verfügt weiterhin über die Eigenschaft IDENTITY, was zu einem Konflikt führt, wenn versucht wird, Schlüsselwerte manuell zuzuweisen.

Auflösung

Die Lösung besteht darin, die Eigenschaft IDENTITY für die ID-Spalte in der Datenbank zu deaktivieren. Verwenden Sie diesen SQL-Befehl:

<code class="language-sql">ALTER TABLE Events ALTER COLUMN EventID INT NOT NULL</code>

Attributbasierte Alternative

Alternativ können Sie Attribute direkt innerhalb Ihrer Entitätsklasse verwenden:

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

Diese Methode funktioniert auch korrekt mit EF Core.

Durch die Implementierung dieser Lösungen erhalten Entwickler Kontrolle über die Zuweisung von Primärschlüsseln, geben Werte manuell an und umgehen die standardmäßige automatische Generierung von EF.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Entity Framework automatisch Primärschlüssel generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn