我創建了一個使用現有數據庫的代碼優先方法的MVC應用程序。無法從模型代碼優先刪除FK
我已經注意到,我的一個表並不需要一個外鍵,所以我試圖刪除它,但我不斷收到:
對象「FK_BorrowedProperty_codeStatus」是依賴於列「StatusId」 。 ALTER TABLE DROP COLUMN StatusId失敗,因爲一個或多個對象訪問此列。
步驟我都做
- 已經進入
BorrowedProperty
類和刪除public int StatusId { get; set; }
&public virtual codeStatu codeStatu { get; set; }
- 推門進去
CodeStatu
類和刪除[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<BorrowedProperty> BorrowedProperties { get; set; }
- 飄入我的DbContext和註釋掉這一行
//modelBuilder.Entity<codeStatu>() // .HasMany(e => e.BorrowedProperties) // .WithRequired(e => e.codeStatu) // .HasForeignKey(e => e.StatusId) // .WillCascadeOnDelete(false);
- 添加遷移DeleteStatusFKFromBorrowedProperty
導致:
public partial class DeleteStatusFKFromBorrowedProperty : DbMigration
{
public override void Up()
{
DropForeignKey("dbo.BorrowedProperty", "StatusId", "dbo.codeStatus");
DropIndex("dbo.BorrowedProperty", new[] { "StatusId" });
DropColumn("dbo.BorrowedProperty", "StatusId");
}
public override void Down()
{
AddColumn("dbo.BorrowedProperty", "StatusId", c => c.Int(nullable: false));
CreateIndex("dbo.BorrowedProperty", "StatusId");
AddForeignKey("dbo.BorrowedProperty", "StatusId", "dbo.codeStatus", "Id");
}
}
- 更新數據庫
然後我收到上述錯誤。 BorrowedProperty數據庫表中有零記錄。
我在做什麼錯?
好吧,我有機會獲得SSMS實例,其中我用,但我想知道關於方法的解決方案做..我必須在特定區域(如migration.cs中)創建它,或者我可以將它放在任何地方,只需在migration.cs中引用它即可? –