TLDR; Come si aggiunge un indice di testo completo tramite migrazioni codificate di Entity framework 5Creazione dell'indice di testo completo all'interno di Entity Framework Coded Migrations
Si verificano problemi durante l'aggiunta di un indice di testo completo a un database utilizzando le migrazioni di Entity Framework. Deve esserci fin dall'inizio, quindi sto tentando di modificare la migrazione InitialCreate che è stata generata automaticamente per aggiungerla.
Poiché non c'è un modo per farlo tramite l'API di DbMigrations, ho fatto ricorso a inline sql alla fine del codice "Su".
Sql("create fulltext catalog AppNameCatalog;");
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;");
Quando questo viene eseguito tutto viene creato bene fino a quando si raggiunge questo sql, quindi genera l'errore sql 'CREATE FULLTEXT catalogo non può essere utilizzato all'interno di una transazione utente. '. Quale è previsto e funzionante come progettato.
Fortunatamente, Sql() ha un sovraccarico che consente di eseguire sql all'esterno della transazione di migrazione. Eccezionale! Ho pensato.
Sql("create fulltext catalog AppNameCatalog;", true);
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;", true);
Ma bassa ed ecco la modifica del codice per fare questo (vedi sopra) si traduce in un nuovo errore di timeout 'timeout. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde. '
Ho provato a sputare lo sql e farlo funzionare manualmente e funziona correttamente. Ho anche diffdato lo sql generato con e senza eseguirlo al di fuori di una transazione e sono identici, quindi deve essere qualcosa nel modo in cui viene eseguito sql.
Grazie in anticipo per qualsiasi aiuto!
Ehi, grazie per l'input. Ha funzionato come una migrazione separata allora? –
Sì, ho funzionato come una migrazione separata. La creazione della tabella avviene nella migrazione di InitialCreate e il catalogo e gli indici di testo completo vengono creati in una migrazione separata che deve essere eseguita dopo la migrazione di InitialCreate. – jspaey