entity-framework-5 - EF 迁移 : Error changing an indexed field to nullable

标签 entity-framework-5 entity-framework-migrations

我最初迁移的代码如下

        CreateTable(
            "dbo.Sites",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Description = c.String(maxLength: 450)
                })
            .PrimaryKey(t => t.Id);


为了使描述字段是唯一的,我在 UP 方法的末尾添加了以下内容

CreateIndex("dbo.Sites", "Description", unique: true);



后来我决定将描述字段设为必需。

新迁移产生以下变化

AlterColumn("dbo.Sites", "Description", c => c.String(nullable: false, maxLength: 450));



但是,当此更改尝试运行时,我收到一个错误

ALTER TABLE ALTER COLUMN Description failed because one or more objects access this column.



我能够使用探查器隔离 SQL 行,因为

ALTER TABLE [dbo].[Sites] ALTER COLUMN [Description] nvarchar NOT NULL



当我在 Management Studio 中运行它时,它给了我以下错误

Msg 5074, Level 16, State 1, Line 1 The index 'IX_Description' is dependent on column 'Description'. Msg 4922, Level 16, State 9, Line 1 ALTER TABLE ALTER COLUMN Description failed because one or more objects access this column.



如何获取迁移代码以删除索引,然后更改更改列,然后重新构建索引?

我正在使用 SQL Server 2008 R2

最佳答案

也许是这样的?

DropIndex("dbo.Sites", "IX_Description");
AlterColumn("dbo.Sites", "Description", c => c.String(nullable: false, maxLength: 450));
CreateIndex("dbo.Sites", "Description", unique: true);

我认为您也可以直接执行 SQL,如下所示。
Sql("DROP INDEX [IX_Description] ON [dbo].[Sites] WITH ( ONLINE = OFF )");

如果您想添加检查索引是否存在或其他内容,这会很有用。

关于entity-framework-5 - EF 迁移 : Error changing an indexed field to nullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785707/

相关文章:

c# - EF Code First - 无法将值 NULL 插入列

c# - 在 Entity Framework 中处理主数据表和相关表

c# - Entity Framework 异常 : Ambiguous match found

c# - 同一张表中的两个一对多关系

.net - 无法检测绑定(bind)到 EF 导航属性 MVVM 的 Datagrid 记录的更改(与 ListView 一起使用)

entity-framework - MigrateDatabaseToLatestVersion useSuppliedContext = false 的目的是什么?

entity-framework - 将 EF Add-Migration 脚本编写到自动构建任务中

entity-framework - EF 迁移控制日志记录 SQL

c# - EF中Add-Migration中StartupProjectName参数的用途是什么

entity-framework-4.3 - OnModelCreating和非自动迁移有何关系?