Sono un po 'nuovo per la prima migrazione del codice e mi sta dando mal di testa ...Come posso impostare il valore predefinito di una nuova colonna della tabella durante le migrazioni Code-First?
Fondamentalmente, sto cercando di creare una nuova tabella di valori ("Razze" nel mio esempio). Voglio aggiungere una colonna in un'altra tabella 'Dogs' che contiene un BreedId, non può essere nullo e ha un valore predefinito.
Dopo un sacco di falsi, ho finito con il codice qui sotto. (Non mi piaceva l'aggiunta della chiave esterna, quindi ho dovuto commentare quel po ').
CreateTable(
"dbo.Breeds",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(nullable: false),
})
.PrimaryKey(t => t.Id);
Sql("SET IDENTITY_INSERT [dbo].[Breeds] ON");
Sql("INSERT into [dbo].[Breeds] ([Id], [Name]) VALUES ('1', 'Long Hair')");
Sql("SET IDENTITY_INSERT [dbo].[Breeds] OFF");
AddColumn("dbo.Dogs", "BreedId", c => c.Int(nullable: false, defaultValue: '1'));
//AddForeignKey("dbo.Dogs", "BreedId", "dbo.Breeds", "Id");
CreateIndex("dbo.Dogs", "BreedId");
Ma dopo l'esecuzione di Update-Database, il risultato è:
ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])
Come si può vedere il valore di default è diventato '49' al posto di '1'e Non ho idea del perché. Qualcuno può vedere dove sto andando male, o c'è un modo più semplice per ottenere ciò che sto cercando di fare?
Grazie!
Forse qualcosa di strano sta accadendo quando sta lanciando il "1" in un numero intero 1, che fa automaticamente? Hai provato a utilizzare il numero intero 1 invece di "1" e hai visto se fa la differenza? – Scotch
Ah sì - è così! Rimosso le virgolette e andava bene (deve essere stata una lunga giornata ...). Grazie! – user2584299