데이터베이스 모델에 이전에 동일한 테이블에 대한 링크가 이미있는 테이블에 두 번째 Column을 추가했습니다.C# EntityFramework CodeFirst 마이 그 레이션은 기존 하나에 대한 새로운 열을 만듭니다.
[Table("RepairProcesses", Schema = "Data")]
public class RepairProcess : DatabaseBase
{
[DataMember]
[Column("SerialNumberID")]
public Guid SerialNumberID { get; set; }
[ForeignKey("SerialNumberID")]
public virtual SerialNumber SerialNumber { get; set; }
}
지금 나는 테이블에 두 번째 링크를 추가하고, 모델은 이제 다음과 같이 보입니다 : 내 변경하기 전에 내 모델은 다음과 같이 보이는
[Table("RepairProcesses", Schema = "Data")]
public class RepairProcess : DatabaseBase
{
[DataMember]
[Column("SerialNumberID")]
public Guid SerialNumberID { get; set; }
[DataMember]
[Column("ReplacementSerialNumberID")]
public Guid? ReplacementSerialNumberID { get; set; }
[ForeignKey("SerialNumberID")]
public virtual SerialNumber SerialNumber { get; set; }
[ForeignKey("ReplacementSerialNumberID")]
public virtual SerialNumber ReplacementSerialNumber { get; set; }
}
내가 지금 migrationscript을 만들려고 할 때 EntityFramework는 foreingn 키를 삭제하고 SerialNumber_ID라는 이름의 새 열을 만듭니다.
public override void Up()
{
DropForeignKey("Data.RepairProcesses", "SerialNumberID", "Data.SerialNumbers");
AddColumn("Data.RepairProcesses", "SerialNumber_ID", c => c.Guid());
AddColumn("Data.RepairProcesses", "ReplacementSerialNumberID", c => c.Guid());
CreateIndex("Data.RepairProcesses", "SerialNumber_ID");
CreateIndex("Data.RepairProcesses", "ReplacementSerialNumberID");
AddForeignKey("Data.RepairProcesses", "ReplacementSerialNumberID", "Data.SerialNumbers", "ID");
AddForeignKey("Data.RepairProcesses", "SerialNumber_ID", "Data.SerialNumbers", "ID");
}
public override void Down()
{
DropForeignKey("Data.RepairProcesses", "SerialNumber_ID", "Data.SerialNumbers");
DropForeignKey("Data.RepairProcesses", "ReplacementSerialNumberID", "Data.SerialNumbers");
DropIndex("Data.RepairProcesses", new[] { "ReplacementSerialNumberID" });
DropIndex("Data.RepairProcesses", new[] { "SerialNumber_ID" });
DropColumn("Data.RepairProcesses", "ReplacementSerialNumberID");
DropColumn("Data.RepairProcesses", "SerialNumber_ID");
AddForeignKey("Data.RepairProcesses", "SerialNumberID", "Data.SerialNumbers", "ID");
}
문제는이 생산 데이터베이스이며, EF는 serialNumber를위한 새로운 필드를 만들 때 내가 올바른 필드에 대한 링크를 잃어버린 것입니다.
새 열을 만드는 위/아래 스크립트의 줄만 삭제할 때 EF가 SerialNumber_ID라는 열을 예상하기 때문에 문제가 발생했습니다. 당신의 도움에 대한
감사합니다, 마이클
정말 감사합니다! 그 트릭을하고있다. – Michael