更新时间:2023-11-30 20:27:16
我造成了应用迁移到现有的数据库类似的问题,所以我创建了一个空迁移,并使用SQL代码,这是我的例子:
I had a similar problem caused by applying Migrations to existing database, so I created an empty Migration and use SQL code, here is my example:
public override void Up()
{
DropForeignKey("dbo.Bar", "FooId", "dbo.Foo");
Sql("IF object_id(N'[dbo].[FK_Bar_Foo]', N'F') IS NOT NULL ALTER TABLE [dbo].[Bar] DROP CONSTRAINT [FK_Bar_Foo]");
Sql("CREATE TABLE [dbo].[FooTemp] ([Id] int NOT NULL)");
Sql("INSERT INTO [dbo].[FooTemp] ([Id]) SELECT [Id] FROM [dbo].[Foo]");
Sql("DROP TABLE [dbo].[Foo]");
Sql("CREATE TABLE [dbo].[Foo] ([Id] int IDENTITY (1,1) NOT NULL)");
Sql("SET IDENTITY_INSERT [dbo].[Foo] ON");
Sql("INSERT INTO [dbo].[Foo] ([Id]) SELECT [Id] FROM [dbo].[FooTemp]");
Sql("SET IDENTITY_INSERT [dbo].[Foo] OFF");
Sql("DROP TABLE [dbo].[FooTemp]");
AddPrimaryKey("dbo.Foo", "Id");
AddForeignKey("dbo.Bar", "FooId", "dbo.Foo", "Id");
}
public override void Down()
{
DropForeignKey("dbo.Bar", "FooId", "dbo.Foo");
Sql("CREATE TABLE [dbo].[FooTemp] ([Id] int NOT NULL)");
Sql("INSERT INTO [dbo].[FooTemp] ([Id]) SELECT [Id] FROM [dbo].[Foo]");
Sql("DROP TABLE [dbo].[Foo]");
Sql("CREATE TABLE [dbo].[Foo] ([Id] int NOT NULL)");
Sql("INSERT INTO [dbo].[Foo] ([Id]) SELECT [Id] FROM [dbo].[FooTemp]");
Sql("DROP TABLE [dbo].[FooTemp]");
AddPrimaryKey("dbo.Foo", "Id");
AddForeignKey("dbo.Bar", "FooId", "dbo.Foo", "Id");
}
心连心
HTH