Utilizzo di Entity Framework Core Code: primo sviluppo:
Nell'ultima migrazione che ho eseguito, ho cambiato una relazione da (semplificata)
public class SiteUser
{
public int Id {get; set;}
public int EmployeeId { get; set; }
[InverseProperty("SiteUser")]
public virtual Employee Employee { get; set; }
}
public class Employee
{
public int Id {get; set;}
[InverseProperty("Employee")]
public virtual SiteUser SiteUser { get; set; }
}
(che implica che SiteUser è un sottoinsieme di Employee, opposto rispetto al comportamento previsto) a
public class SiteUser
{
public int Id { get; set; }
}
public class Employee
{
public int Id {get; set;}
public int SiteUserId { get; set; }
[ForeignKey("SiteUserId")]
[InverseProperty("Employee")]
public virtual SiteUser SiteUser { get; set; }
}
Questo ovviamente mi ha dato una migrazione che, tra le altre cose, ha lasciato cadere un vincolo di chiave esterna:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_SiteUser_Employee_EmployeeId",
table: "SiteUser");
//etc
}
Ho eseguito tale migrazione e aggiornato il database da esso, e ha funzionato bene. Tabelle e vincoli di chiavi esterne sono stati correttamente aggiornati al nuovo modello. Tuttavia, sto provando a fare una nuova migrazione ora e quando provo a eseguire Update-Database, ottengo
System.Data.SqlClient.SqlException (0x80131904): 'FK_SiteUser_Employee_EmployeeId' is not a constraint.
Could not drop constraint. See previous errors.
La mia reazione è, beh, duh EF, hai abbandonato quel vincolo nell'ultima migrazione; perché stai cercando di rilasciarlo di nuovo?
Il nuovo file C # di migrazione non contiene nulla in merito alla rimozione di tale vincolo, quindi perché sta provando? E come posso dire a EF di smettere di schiantarsi su questa linea DROP CONSTRAINT?