Quindi sto provando a fare una semplice aggiunta di una voce al mio db in azzurro, ma per qualche motivo il db non sta generando il mio PK per la voce.
Di seguito è riportato tutto il codice utilizzato per creare il db e fare la voce.
Questo è il EF 6.1 su una console appImpossibile inserire il valore NULL nella colonna "MaintenanceId", tabella "<tableName>"; la colonna non consente null. INSERT fallisce EF 6.1
Contesto
public BlizzardDbContext() : base("AzureSqlDb")
{
}
public DbSet<Maintenance> Maintenances { get; set; }
Modello
public class Maintenance
{
public Maintenance()
{}
public Maintenance(DateTime start, DateTime end, string info)
{
Start = start;
End = end;
Info = info;
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int MaintenanceId { get; set; }
public DateTime? Start { get; set; }
public DateTime? End { get; set; }
public string Info { get; set; }
}
prova che non è riuscito a salvare le modifiche
var context = new BlizzardDbContext();
context.Maintenances.Add(new Maintenance() {Start = DateTime.Now, End = DateTime.Now, Info = ""});
context.SaveChanges();
So che può sembrare così semplice , ho usato EF alcune volte prima ma non riesco a capire cosa sia andando male questa volta e qui sta l'errore
"Impossibile inserire il valore NULL nella colonna 'MaintenanceId' tabella' .dbo.Maintenances'; la colonna non consente null. INSERT fallisce \ dichiarazione r \ nIl è stato terminato "
Aggiornamento:.. Abbiamo finito per fissare questo eliminando il db e ricreare, credo che ci fosse qualcosa di strano sta succedendo con EF, è non è stato l'aggiornamento del db con la migrazione correttamente in quanto dopo la ricreazione è la colonna è stata quindi impostato per essere Identità
Il messaggio di errore dice quasi esattamente * qual è il problema *. O non stai passando il valore perché hai detto a EF che il database è supposto fornirlo, o stai passando il valore perché la colonna non è una colonna di identità. In questo caso, la colonna non è una colonna Identity (o è stata disattivata). –
@ErikPhilips Sì, lo capisco, ma come si può vedere dal mio modello, l'annotazione dei dati (ho anche provato con API fluente) dice al db che si tratta del collum PK. questo è l'SQL generato dall'accesso al col in SQL Server Object Explorer 'ALTER TABLE [dbo]. [Manutenzioni] ADD CONSTRAINT [PK_dbo.Mavensioni] PRIMARY KEY CLUSTERED ([MaintenanceId] ASC);' – Toxicable
Che è un errore di SQL Server .** SQL Server ** ti dice che non è una colonna Identity indipendentemente da come hai configurato EF. –