Comment configurer la colonne Key Identity dans Entity Framework 7?

entity-framework-core

Question

J'ai le mappeur suivant dans Entity Framework 7 RC1 :

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

Comment créer une colonne Id et identité dans EF 7 RC1?

L'équivalent SQL est:

Id int identity not null

J'ai lu ce serait comme ça:

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

Mais dans EF7 RC1, je ne trouve pas ForSqlServer (). Je trouve:

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

Réponse acceptée

Vous pouvez configurer explicitement une colonne d'identité en appelant.

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

A noter également: identity est le modèle de génération de valeur par défaut utilisé avec les clés primaires. Utiliser des séquences est opt-in.


Réponse populaire

La réponse fournie par natemcmaster est correcte. Vous pouvez définir avec fluentAPI ou vous pouvez également utiliser Data Annotation [Key] pour définir la clé primaire.

Cependant, il existe deux manières de définir la valeur d'identité dans EF Core. Vous pouvez utiliser identité (par défaut), Séquence et Motif HiLo avec Séquence. L'identité est par défaut. En fait, vous n'avez pas à la définir en tant que colonne d'identité si le nom de votre propriété se terminant par Id ou <typeName> Id. EF Core par convention configure une propriété nommée Id ou <typeName> Id comme clé d'une entité.

Et la raison pour laquelle le nom de la méthode d’extension commence à partir de ForSqlServer est ForSqlServer Core prend en charge de nombreux fournisseurs de base de données. Les fonctionnalités de ces fournisseurs étant légèrement différentes, vous pouvez spécifier un comportement différent pour la même propriété en fonction du fournisseur utilisé.

Veuillez lire ces articles pour en savoir plus sur l’utilisation de Sequcence avec EF Core et de HiLo avec EF .



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi