Heim >Backend-Entwicklung >C++ >Wie legt man Primärschlüssel im Entity Framework manuell fest und vermeidet gleichzeitig „IDENTITY_INSERT'-Fehler?

Wie legt man Primärschlüssel im Entity Framework manuell fest und vermeidet gleichzeitig „IDENTITY_INSERT'-Fehler?

Linda Hamilton
Linda HamiltonOriginal
2025-01-14 09:44:43216Durchsuche

How to Manually Set Primary Keys in Entity Framework While Avoiding `IDENTITY_INSERT` Errors?

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!

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