Wie konfiguriere ich die Key Identity-Spalte in Entity Framework 7?

entity-framework-core

Frage

Ich habe den folgenden Mapper in Entity Framework 7 RC1 :

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

Wie mache ich ID und Identitätsspalte in EF 7 RC1?

Das SQL-Äquivalent ist:

Id int identity not null

Ich habe gelesen, dass das so wäre:

b.Property(x => x.Id).ForSqlServer().UseIdentity();

Aber in EF7 RC1 finde ich nicht ForSqlServer (). Ich finde:

.ForSqlServerHasComputedSql()
.ForSqlServerHasColumnName()
.ForSqlServerHasColumnNameType()
.ForSqlServerHasDefaultValue()
.ForSqlServerHasDefaultValueSql()
.ForSqlServerUseSequenceHiLo()
...

Akzeptierte Antwort

Sie können eine Identitätsspalte explizit konfigurieren, indem Sie sie aufrufen.

b.Property(x => x.Id).UseSqlServerIdentityColumn();

Auch erwähnenswert: Identität ist das Standard-Wert-Generierungsmuster, das mit Primärschlüsseln verwendet wird. Die Verwendung von Sequenzen ist Opt-In.


Beliebte Antwort

Die Antwort von natemcmaster ist korrekt. Sie können mit fluentAPI definieren oder Sie können auch die Datenannotation [Key] , um den Primärschlüssel zu definieren.

Es gibt jedoch mehrere Möglichkeiten, den Identitätswert in EF Core zu definieren. Sie können identity (default), Sequence und HiLo Pattern with Sequence verwenden. Identität ist Standard. In der Tat müssen Sie es nicht als Identitätsspalte definieren, wenn Ihr Eigenschaftenname mit Id oder <typeName> Id endet. EF Core konfiguriert standardmäßig eine Eigenschaft mit dem Namen Id oder <typeName> Id als Schlüssel einer Entität.

Und der Grund dafür, dass der Name der Erweiterungsmethode von ForSqlServer ist, dass EF Core viele Datenbankanbieter unterstützt. Und die Funktionalität für diese Anbieter unterscheidet sich geringfügig. Sie können also je nach dem verwendeten Anbieter ein anderes Verhalten für dieselbe Eigenschaft angeben.

Bitte lesen Sie diesen Artikel, um mehr über die Verwendung von Sequcence mit EF Core und HiLo mit EF Core zu erfahren.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum