实体框架迁移不会删除索引约束

时间:2020-04-19 21:44:23

标签: sql-server asp.net-core entity-framework-core

我有基于EF.Core 2的模型,其中SQL Server作为后端。字段(Delete_Flag)曾经是int,我想将其更改为bool。另外,在此字段上定义了一个索引。因此,在添加迁移时,将生成并执行以下SQL(CrForce是表的名称):

DECLARE @var0 sysname;
SELECT @var0 = [d].[name]
   FROM [sys].[default_constraints] [d]
   INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
   WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CrForce]') AND [c].[name] = N'Delete_Flag');
IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [CrForce] DROP CONSTRAINT [' + @var0 + '];');
ALTER TABLE [Crime_Force] ALTER COLUMN [Delete_Flag] bit NOT NULL;

问题是SELECT语句不返回数据,并且DROP CONSTRAINT没有运行。但是,一个索引;因此,当运行ALTER TABLE时,出现以下错误:

The index 'IX_CrForce_Delete_Flag' is dependent on column 'Delete_Flag'.
ALTER TABLE ALTER COLUMN Delete_Flag failed because one or more objects access this column.

该错误是有道理的,但是为什么不首先取消约束?

顺便说一句,如果我明确地从我的DbContext派生类中删除索引,它就可以正常工作。但是我有很多这样的列,我宁愿不要删除(然后添加)索引

0 个答案:

没有答案