Dobbiamo aggiungere alcune righe nel nostro attuale database. Il mio capo mi dice di usare le migrazioni per questo (abbiamo un'app di rete .net e stiamo usando l'EF core 1.1.1). Non sono sicuro su come procedere, ho capito che le migrazioni erano una "modifica dello schema del database", non un "aggiornamento dati". So che anche i semi esistono, ma penso che siano "i primi / originali dati di riempimento" da fare una volta nel progetto, non in un qualsiasi momento casuale. Quindi, dovrei usare le seeding o dovrei usare le migrazioni? Esistono anche migrazioni per una semplice manipolazione dei dati? O c'è un terzo modo per farlo?
Sembra che l'approccio più comune sia l'uso di SQL semplice nella migrazione Up
: consultare i documenti su Data Motion / Custom SQL
Vi sono già suggerimenti simili sullo stack overflow, vedi Entity Framework - Migrations - Code First - Seeding per Migration e il modo migliore per incrementare i dati di seed in Entity Framework 4.3
Quando si esegue un seed iniziale, è possibile sovrascrivere il metodo Seed
nel proprio Configuration.cs
Vedere qui
è possibile creare il proprio override Up / Down e dirgli di creare o inserire, se necessario, con T-SQL. Sarebbe una migrazione che non ha apportato modifiche allo schema. Tuttavia, la parte inferiore rimuoverà quegli elementi con seeding.
public partial class InsertMigrationRows10 : Migration
{
protected override void Up( MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("INSERT INTO SOMETHING(xx, xx, xx)", suppressTransaction: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
//reverse what ever you did in UP
migrationBuilder.Sql("DELETE SOMETHING ....");
}
}
Penso che questo sia quello che stai cercando. e la chiamata Update-Database
(PMC) sarebbe necessaria per farlo funzionare. dotnet ef database update
altrimenti da con nella directory del progetto. Ovviamente, stai attento, non so se questa sia la soluzione migliore.