Non sono sicuro di ciò che fa Bar.Generate ma suppongo che crei un GUID o un ID univoco.
Se è così allora si potrebbe utilizzare:
Execute.Sql("update dbo.Foo set Bar = NEWID()");
Oppure, se volete GUID sequenziali allora si potrebbe utilizzare NEWSEQUENTIALID().
Se si aggiunge una nuova colonna per questo identier unica, quindi tutto ciò che avrebbe bisogno di fare è specificare la nuova colonna .AsGuid()
EDIT: FluentMigrator è una piccola dsl fluente e non è destinato a coprire un caso complicato come questo Non c'è modo (per quanto ne so) di farlo con un SQL UPDATE e quindi non è un modo semplice per farlo con FluentMigrator. Dovrai ottenere il conteggio delle righe per la tabella con ADO.NET o un ORM (Dapper/NHibernate) e quindi eseguire il ciclo di ciascuna riga e aggiornare la colonna Bar con l'identificativo univoco personalizzato. Quindi se hai un milione di righe allora dovrai fare un milione di aggiornamenti sql. Se è possibile riscrivere il metodo Bar.Generate() come una funzione Sql basata sulla funzione NEWID() come this o this, è possibile farlo come un'istruzione UPDATE e chiamarla con il metodo Execute.Sql di FluentMigrator.
Non hai menzionato il database con cui stai lavorando. Ma alcuni come Postgres hanno non-standard features che potrebbero aiutarti.
fonte
2012-09-04 15:39:00
è la mia funzione personale che crea una stringa "amichevole" unica, mi spiace non un guid. – shenku
Riesci a riscrivere la tua funzione come una funzione SQL? Altrimenti dovrai scorrere tutte le righe della tabella. –
Va notato che nel tuo esempio di codice, la parola chiave 'table' non dovrebbe essere lì, il comando non verrà eseguito. Sostituisci con il tuo nome effettivo della tabella. – shanabus