Heim >Backend-Entwicklung >C++ >Wie legt man Primärschlüsselwerte im Entity Framework manuell fest?
Entity Framework: Manuelle Primärschlüsselverwaltung
Entity Framework (EF) generiert in der Regel automatisch Primärschlüsselwerte. Es gibt jedoch Situationen, in denen die manuelle Angabe von Primärschlüsseln erforderlich ist. In diesem Leitfaden erfahren Sie, wie Sie dies erreichen.
Automatische Schlüsselgenerierung deaktivieren
Um die manuelle Primärschlüsseleingabe zu ermöglichen, ändern Sie die OnModelCreating
-Methode wie folgt:
<code class="language-csharp">modelBuilder.Entity<Event>().Property(e => e.EventID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);</code>
Behebung von Identitätsspaltenkonflikten
Der Fehler „Identitätsspalte kann keinen expliziten Wert einfügen“ tritt auf, wenn die IDENTITY_INSERT
-Eigenschaft der Tabelle auf OFF
festgelegt ist. Um dies zu beheben, setzen Sie IDENTITY_INSERT
vorübergehend auf ON
, bevor Sie Daten einfügen.
Attributbasierte Konfiguration
Alternativ können Sie Attribute verwenden, um Schlüsseleigenschaften direkt in Ihrer Klasse zu definieren:
<code class="language-csharp">[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; }</code>
Diese Methode vermeidet Änderungen OnModelCreating
und ist mit EF Core kompatibel.
Aktualisiertes POCO-Klassenbeispiel
Die folgende POCO-Klasse demonstriert den attributbasierten Ansatz:
<code class="language-csharp">public class Event { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int EventID { get; set; } public string EventType { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public virtual ICollection<Match> Matches { get; set; } public virtual ICollection<EventParticipation> EventParticipation { get; set; } }</code>
Dieser Ansatz bietet eine sauberere, wartbarere Lösung für die Verwaltung manuell festgelegter Primärschlüssel in Ihren EF-Modellen.
Das obige ist der detaillierte Inhalt vonWie legt man Primärschlüsselwerte im Entity Framework manuell fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!