【发布时间】:2014-08-21 05:10:48
【问题描述】:
我已将 Id 属性的类型从 Int 更改为 Guid,没有其他实体引用该 Id,并且我已从数据库中手动删除该实体的所有记录,我生成的迁移类如下所示:
public override void Up()
{
AlterColumn("dbo.RoutineExercises", "RoutineExerciseId", c => c.Guid(nullable: false));
}
public override void Down()
{
AlterColumn("dbo.RoutineExercises", "RoutineExerciseId", c => c.Int(nullable: false, identity: true));
}
当我运行 update-database 命令时出现此错误:
对象“PK_dbo.RoutineExercises”依赖于列“RoutineExerciseId”。 ALTER TABLE ALTER COLUMN RoutineExerciseId 失败,因为一个或多个对象访问此列。
我的 FluentAPI 配置如下所示:
modelBuilder.Entity<RoutineExercise>().HasKey(r => r.RoutineExerciseId);
modelBuilder.Entity<RoutineExercise>()
.HasRequired(r => r.Exercise)
.WithMany()
.HasForeignKey(r => r.ExerciseId)
.WillCascadeOnDelete(true);
modelBuilder.Entity<RoutineExercise>()
.HasRequired(r => r.Routine)
.WithMany()
.HasForeignKey(r => r.RoutineId)
.WillCascadeOnDelete(true);
如何在不删除整个数据库的情况下解决此问题?
【问题讨论】:
标签: c# sql sql-server entity-framework