Comment configurer une colonne d'identité à l'aide d'Entity Framework Core?

c# entity-framework-core

Question

Comment créer une colonne d'identité à incrémentation automatique dans Entity Framework Core?

Évidemment, je peux le faire en utilisant une API fluide pour EF6 par exemple.

Réponse acceptée

Comme il existe très peu de documentation EF7, nous devons tirer une grande partie de ce que nous savons des tests source ou unitaires. Selon les deux tests unitaires suivants dans la source EF7 ...

Ici et ici

Vous devriez configurer une propriété pour Identity comme ceci:

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

Et vous configureriez une propriété pour les séquences comme ceci:

ForSqlServer().UseSequence();

Les urls ont changé en raison de la modification du réseau aspnet-core, et les méthodes ont également changé depuis la première demande.

Ici et ici

if (_useSequence) 
{
    b.Property(e => e.Identifier).ForSqlServerUseSequenceHiLo();
} 
else 
{
    b.Property(e => e.Identifier).UseSqlServerIdentityColumn();
}

Il est possible que ces URL changent à nouveau (c'est pourquoi j'ai inclus le code correspondant), mais il est ridiculement facile de simplement regarder l'URL et d'aller sur le site pour déterminer quelle est la nouvelle URL.

En réalité, le but de ma réponse est que vous pouvez résoudre ce problème vous-même en consultant les tests unitaires dans le code source de GitHub. Vous ne devriez pas avoir besoin de quelqu'un pour le nourrir à la cuillère.

EDIT: Mise à jour des liens vers la version 2.1 (fonctionne toujours pour 1.1 et 2.0 également)


Réponse populaire

Dans la dernière version de EF7, une nouvelle méthode d'extension permet de définir la colonne d'identité.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
  modelBuilder.Entity<MyEntity>(b =>
  {
    b.HasKey(e => e.Identifier);
    b.Property(e => e.Identifier).ValueGeneratedOnAdd();
  });
}


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