in my Database models i added a second Column to a table which already had one link to the same table before. My Model before my changes looks as followed:
[Table("RepairProcesses", Schema = "Data")]
public class RepairProcess : DatabaseBase
{
[DataMember]
[Column("SerialNumberID")]
public Guid SerialNumberID { get; set; }
[ForeignKey("SerialNumberID")]
public virtual SerialNumber SerialNumber { get; set; }
}
Now i added the second Link to the Table and the Model now looks as followed:
[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; }
}
When i now try to create the migrationscript the EntityFramework deletes the foreingn keys and creates a new column with the name 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");
}
The problem is that this is a productive database and when the EF creates a new Field for the SerialNumber i lost the links to the correct field.
When i only delete the lines in the Up/Down Script which creates the new column i ran into problems because the EF Expects a Column named SerialNumber_ID.
Thanks for your help, Michael