10

Sto utilizzando Entity Framework 4.3 Code First e provando la funzione Migrations.Come modificare l'ordine delle colonne con Entity Framework Code Prime migrazioni

Se posso aggiungere una nuova proprietà per la mia classe e quindi eseguire Aggiungere alla migrazione dalla finestra della console gestore di pacchetti ottengo qualcosa di simile:

public override void Up() 
    { 
     AddColumn("Products", "Discontinued", c => c.Boolean(nullable: false)); 
    } 

Vorrei essere in grado di influenzare l'ordine del colonna perché non voglio che venga semplicemente aggiunta alla tabella ma piuttosto collocata in un indice specifico. Ho pensato che potrei essere in grado di aggiungerlo alla mia configurazione ModelBuilder, qualcosa di simile:

Property(p => p.Discontinued).HasColumnOrder(2); 

ma l'esecuzione di Update-base di dati non sembra usarlo. Questo può essere fatto come una migrazione?

+0

a) Non v'è alcun modo per inserire nelle colonne precedenti senza fare un sacco di hacking, b) non si dovrebbe essere tenendo deprecato dati nel tuo database usando "soft-delete" - controlla l'archiviazione dei dati deprecati. –

+0

Qual è il punto di avere colonne nella tabella del database in ordine specifico? È solo un archivio di dati. –

+1

Solo per scopi estetici, tutto qui. Puoi specificarlo quando il database viene creato con il generatore di modelli, quindi ti chiedevo solo se è possibile quando aggiungi una nuova colonna come parte di una migrazione. Nessun grosso problema. – SteveB

risposta

5

Questa è solo una questione di funzionalità mancante. SQL da solo non si basa su alcun ordine implicito di colonne (con alcune eccezioni: ORDER BY, ...).

Né SQL Server né ORACLE hanno un comando DDL SQL diretto (ovvero ALTER TABLE...) per spostare una colonna.

Pertanto non è possibile modificare l'ordine senza uno sforzo elevato (ricreare la tabella). Si veda ad esempio