Kir*_*eed 8 ef-migrations entity-framework-5
我初始迁移中的代码如下
Run Code Online (Sandbox Code Playgroud)CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
为了使Description字段是唯一的,我将以下内容添加到UP方法的末尾
CreateIndex("dbo.Sites","Description",唯一:true);
后来我决定要求描述字段.
新迁移会产生以下更改
AlterColumn("dbo.Sites","Description",c => c.String(nullable:false,maxLength:450));
但是,当此更改尝试运行时,我收到错误
ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.
我能够使用分析器隔离SQL行,如
ALTER TABLE [dbo].[Sites] ALTER COLUMN [描述] nvarchar NOT NULL
当我在Management Studio中运行它时,会出现以下错误
消息5074,级别16,状态1,行1索引'IX_Description'取决于列'描述'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.
如何获取迁移代码以删除索引,然后更改更改列,然后重新构建索引?
我正在使用SQL Server 2008 R2
Mar*_*ark 10
也许这样的事情?
DropIndex("dbo.Sites", "IX_Description");
AlterColumn("dbo.Sites", "Description", c => c.String(nullable: false, maxLength: 450));
CreateIndex("dbo.Sites", "Description", unique: true);
Run Code Online (Sandbox Code Playgroud)
我认为您也可以执行SQL direct,如下所示.
Sql("DROP INDEX [IX_Description] ON [dbo].[Sites] WITH ( ONLINE = OFF )");
Run Code Online (Sandbox Code Playgroud)
如果要添加检查索引存在或其他内容,这可能很有用.
| 归档时间: |
|
| 查看次数: |
5590 次 |
| 最近记录: |