Jestem trochę nowy, aby zakodować pierwsze migracje i daje mi to ból głowy ...Jak ustawić domyślną wartość nowej kolumny tabeli podczas migracji kodu po raz pierwszy?
Zasadniczo próbuję stworzyć nową tabelę wartości ("Breeds" w moim przykładzie). Chcę dodać kolumnę w innej tabeli "Psy", która posiada identyfikator BreedId, nie może być pusta i ma wartość domyślną.
Po wielu niespodziankach, znalazłem poniższy kod. (Nie podoba mi się dodanie obcego klucza, więc musiałem to skomentować).
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");
Ale po uruchomieniu Update Database, wynik jest:
ALTER TABLE [dbo].[Dogs] ADD [BreedId] [int] NOT NULL DEFAULT 49
CREATE INDEX [IX_BreedId] ON [dbo].[Dogs]([BreedId])
Jak widać wartość domyślna stała „49” zamiast „1'and nie mam pojęcia dlaczego. Czy ktoś może zobaczyć, gdzie idę źle, lub czy istnieje łatwiejszy sposób osiągnięcia tego, co próbuję zrobić?
Dzięki!
Może dzieje się coś dziwnego, gdy rzutuje "1" na liczbę całkowitą 1, co automatycznie? Czy próbowałeś używać liczby całkowitej 1 zamiast "1" i widziałeś, czy to robi różnicę? – Scotch
Ach tak - to wszystko! Usunięto cytaty i było w porządku (musiał być długi dzień ...). Dziękuję Ci! – user2584299