Vecchio post ha pensato di condividere ciò che ho trovato con Entity Framework 6.1.3.
Ho creato una semplice libreria di livello dati utilizzando C# e .NET Framework 4.6.1, aggiunto un semplice repository/classe di servizio, una prima classe di contesto del codice e indirizzato il mio file web.config a un database SQL Express 2014 locale.
Nella classe di entità ho aggiunto il seguente costruttore di attributo alla colonna Id:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Poi ho creato una nuova migrazione digitando il seguente in Visual Studio 2015 Package Manager:
Add-migrazione
Assegnare un nome alla migrazione e quindi attendere che venga creata la classe DbMigtation. Modificare la classe e aggiungere la seguente operazione CreateTable:
CreateTable(
"dbo.Article",
c => new
{
Id = c.Guid(nullable: false, identity: true),
Title = c.String(),
Content = c.String(),
PublishedDate = c.DateTime(nullable: false),
Author = c.String(),
CreateDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.Id);
}
La tabella qui sopra è un esempio il punto chiave qui è la seguente annotazione costruttore:
nullable: false, identity: true
Questo dice EF in modo da precisare la colonna come non nullabe e vuoi impostarlo come una colonna Identity da seminare da EF.
Eseguire la migrazione di nuovo con il seguente comando:
update-database
Questo verrà eseguito la classe di migrazione cadere il tavolo prima (metodo di Down()), quindi la creazione della tabella (Up() metodo).
Esegui i test dell'unità e/o connettiti al database ed esegui una query di selezione dovresti vedere la tabella nel suo nuovo modulo, aggiungere alcuni dati esclusa la colonna Id e dovresti vedere i nuovi Guid (o qualsiasi tipo di dati che scegli) da generare.
Avevo visto il DatabaseGeneratedOption.Identity ma tbh ero stato pigro e non l'avevo letto, ho solo dato per scontato che rendesse quella colonna il campo PKey. Grazie, ci provo. – JamesStuddart
Funzionerà ancora con i database multi-tenant? – amd
@Ahmad Non funzionerà se ogni inquilino ha il proprio seme – Eranga