Come configurare una colonna Identity utilizzando Entity Framework Core?

c# entity-framework-core

Domanda

Come posso creare una colonna Identità incremento automatico in Entity Framework Core?

Ovviamente posso farlo usando l'API fluente per EF6 per esempio.

Risposta accettata

Dal momento che la documentazione EF7 è molto limitata, gran parte di ciò che sappiamo dobbiamo raccogliere dai test di origine o unità. Secondo i seguenti due test unitari nella sorgente EF7 ...

Qui e Qui

Dovresti configurare una proprietà per Identity in questo modo:

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

E tu configureresti una proprietà per Sequenze come questa:

ForSqlServer().UseSequence();

Gli URL sono cambiati a causa della reorg di aspnet-core, e anche i metodi sono cambiati da quando è stato chiesto per la prima volta.

Qui e Qui

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

È possibile che questi URL cambino di nuovo (motivo per cui includo il codice pertinente), ma è ridicolmente facile guardare l'url e andare al sito e capire quale sia il nuovo URL.

In realtà, il punto principale della mia risposta è che puoi capire queste cose da solo semplicemente andando e guardando i test unitari nel codice sorgente su GitHub. Non dovresti aver bisogno di qualcuno che ti dia da mangiare.

EDIT: collegamenti aggiornati alla versione 2.1 (funziona ancora anche per 1.1 e 2.0)


Risposta popolare

Nell'ultima versione di EF7 è disponibile un nuovo metodo di estensione per impostare la colonna Identity

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


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow