【发布时间】:2015-04-29 07:42:38
【问题描述】:
相关Entity如下:
public class FieldBookingDateRange : ITimeStamps, ICreatedBy, ISoftDeletable
{
[Key, DatabaseGenerated( DatabaseGeneratedOption.None )]
public int FieldBookingDateRangeID { get; set; }
[Required]
public virtual FieldBooking FieldBooking { get; set; }
public virtual DateRange DateRange { get; set; }
....
}
我有一个当前设置为 Identity: true 的数据库列。
如果我在其上运行以下自动生成的迁移(这应该在身份上将列设置为 false):
public partial class RemovedDBGen_FieldBookingDateRange : DbMigration
{
public override void Up()
{
DropIndex("dbo.FieldBookingDateRanges", new[] { "FieldBookingDateRangeID" });
DropPrimaryKey("dbo.FieldBookingDateRanges");
AlterColumn("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID", c => c.Int(nullable: false, identity: false));
AddPrimaryKey("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID");
CreateIndex("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID");
}
public override void Down()
{
DropIndex("dbo.FieldBookingDateRanges", new[] { "FieldBookingDateRangeID" });
DropPrimaryKey("dbo.FieldBookingDateRanges");
AlterColumn("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID", c => c.Int(nullable: false, identity: true));
AddPrimaryKey("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID");
CreateIndex("dbo.FieldBookingDateRanges", "FieldBookingDateRangeID");
}
}
它什么也没做……但不会失败。
任何想法为什么这不起作用?
SQL -详细输出
IF EXISTS (
SELECT name FROM sys.indexes
WHERE
name = N'IX_FieldBookingDateRangeID' AND
object_id = object_id(N'[dbo].[FieldBookingDateRanges]', N'U')
)
DROP INDEX [IX_FieldBookingDateRangeID] ON [dbo].[FieldBookingDateRanges]
ALTER TABLE [dbo].[FieldBookingDateRanges] DROP CONSTRAINT [PK_dbo.FieldBookingDateRanges]
ALTER TABLE [dbo].[FieldBookingDateRanges] ALTER COLUMN [FieldBookingDateRangeID] [int] NOT NULL
ALTER TABLE [dbo].[FieldBookingDateRanges] ADD CONSTRAINT [PK_dbo.FieldBookingDateRanges] PRIMARY KEY ([FieldBookingDateRangeID])
CREATE INDEX [IX_FieldBookingDateRangeID] ON [dbo].[FieldBookingDateRanges]([FieldBookingDateRangeID])
【问题讨论】:
-
你能展示一个生成的 SQL 脚本吗?
-
我已经为你完成了...我自己也去检查一下。
-
看来我必须完全删除表格才能修改它:S?
-
这可能是 SQL Server 的限制。我记得我前一段时间必须这样做,但找不到任何文档。
-
这里有问题的一些解释:stackoverflow.com/a/18917348/150342
标签: c# entity-framework