Umgehen der automatischen Inkrementierung im Entity Framework: Ein praktischer Leitfaden
Die automatische Primärschlüsselgenerierung von Entity Framework kann problematisch sein, wenn Sie Schlüsselwerte manuell zuweisen müssen. Dies führt oft zu Konflikten, wie der Fehler zeigt, der beim Versuch auftritt, das Verhalten bei der automatischen Inkrementierung außer Kraft zu setzen.
Anfänglich wurde der folgende Code verwendet, um zu verhindern, dass Entity Framework den Primärschlüssel automatisch verwaltet:
<code class="language-csharp">modelBuilder.Entity<event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
Dies führte jedoch zu einem SqlException
: „Der explizite Wert für die Identitätsspalte in der Tabelle „Ereignisse“ kann nicht eingefügt werden, wenn IDENTITY_INSERT auf OFF gesetzt ist.“ Dies liegt daran, dass IDENTITY_INSERT
der Datenbank deaktiviert ist, wodurch das direkte Einfügen von Werten in Identitätsspalten verhindert wird.
Eine robustere Lösung nutzt DataAnnotations-Attribute für einen saubereren und kompatibleren Ansatz, insbesondere mit Entity Framework Core:
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int Id { get; set; }</code>
Dieses Code-Snippet deklariert die Eigenschaft Id
als Primärschlüssel ([Key]
) und deaktiviert explizit die automatische Wertgenerierung ([DatabaseGenerated(DatabaseGeneratedOption.None)]
). Dies ermöglicht eine manuelle Primärschlüsselzuweisung bei gleichzeitiger Wahrung der Kompatibilität mit dem Entity Framework. Diese Methode vermeidet effektiv das IDENTITY_INSERT
-Problem und bietet eine elegantere Lösung für die Verwaltung von Primärschlüsseln.
Das obige ist der detaillierte Inhalt vonWie legt man Primärschlüssel im Entity Framework manuell fest und vermeidet gleichzeitig „IDENTITY_INSERT'-Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!