1 回答

TA貢獻1775條經驗 獲得超11個贊
我終于找到了解決辦法。請記住,該項目正在使用自動遷移。基本上,Step1 和 Step2 遷移方法已步入正軌,但是,在 Step1 和 Step2 之后應用了第三種自動遷移。我刪除了 Step2 遷移,實質上將其變成了自動遷移。當 update-database 運行時,它只應用 Step1,然后檢查模型,自動創建 Step2 的內容并運行它們,欺騙其他開發人員的機器使模型和數據庫重新保持一致。
public partial class ResetJobSites : DbMigration
{
public override void Up()
{
DropForeignKey("dbo.JobSites", "JobSiteID", "dbo.Jobs");
DropIndex("dbo.JobSites", new[] { "JobSiteID" });
DropTable("dbo.JobSites");
}
public override void Down()
{
CreateTable(
"dbo.JobSites",
c => new
{
JobSiteID = c.Int(nullable: false),
})
.PrimaryKey(t => t.JobSiteID);
CreateIndex("dbo.JobSites", "JobSiteID");
AddForeignKey("dbo.JobSites", "JobSiteID", "dbo.Jobs", "JobIb");
}
}
PM> update-database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201907291444500_ResetJobSites].
Applying explicit migration: 201907291444500_ResetJobSites.
Applying automatic migration: 201907291528423_AutomaticMigration.
PM>
總結一下:要在打開自動遷移時將一對一轉換為一對多關系,您需要保留生產數據庫(但愿意接受正在轉換的表上的數據丟失)。
創建顯式遷移以解耦兩個表(我通過注釋掉類、Job 表上的 nav 屬性、DbContext 中的 DbSet 以及構建項目所需的任何其他內容來實現此目的)。
進行更改模型,將 nav 屬性添加回 Job 表(ICollection nav 屬性),將 DbSet 添加回 DbContext,然后讓自動遷移運行。
首先不要讓自己陷入這種境地。
- 1 回答
- 0 關注
- 155 瀏覽
添加回答
舉報