Voglio passare da ID autoincrement a chiavi primarie composite. Quindi, queste due entità
public class SeasonTeam
{
public int SeasonTeamId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonTeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
ora sembrerà così
public class SeasonTeam
{
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
Visual Studio ha generato il codice di migrazione, ma corrompe i dati.
migrationBuilder.AddColumn<int>(
name: "SeasonId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "TeamId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.DropForeignKey(name: "FK_GroupEntry_SeasonTeam_SeasonTeamId", table: "GroupEntry");
migrationBuilder.DropPrimaryKey(name: "PK_SeasonTeam", table: "SeasonTeam");
migrationBuilder.DropColumn(name: "SeasonTeamId", table: "SeasonTeam");
Il valore predefinito 0 ovviamente non funzionerà, ho bisogno di id dalla tabella SeasonTeam referenziata, ma non ho trovato alcun esempio. Come posso impostare i valori id appropriati per una nuova chiave composita prima di eliminare la colonna della vecchia chiave primaria?
Non è possibile farlo a livello di programmazione con le API di EF, tuttavia, se è possibile scrivere l'SQL per spostare i valori da una tabella a un'altra, è possibile aggiungere un passaggio di migrazione personalizzato dopo le operazioni di colonna Aggiungi e prima della colonna di rilascio.
migrationBuilder.Sql(@"INSERT INTO ...(your SQL here)");
Dalle informazioni limitate nella tua domanda, non posso dirti che cosa dovrebbe essere SQL.