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
Freigeben: 2025-01-14 09:56:43
Original
507 Leute haben es durchsucht

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:

modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Nach dem Login kopieren

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:

ALTER TABLE Events ALTER COLUMN EventID INT NOT NULL
Nach dem Login kopieren

Attributbasierte Alternative

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

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage