TLDR; Wie fügen Sie einen Volltextindex mithilfe von Entity-Framework hinzu? 5 codierte MigrationenVolltextindex innerhalb von Entity Framework erstellen Codierte Migrationen
Ich habe Probleme beim Hinzufügen eines Volltextindex zu einer Datenbank mithilfe von Entity-Framework-Migrationen. Es muss von Anfang an da sein, also versuche ich, die InitialCreate-Migration zu ändern, die automatisch generiert wurde, um sie hinzuzufügen.
Da es keine Möglichkeit gibt, dies über die DbMigrations API zu tun, habe ich auf inline sql am Ende des Up-Codes zurückgegriffen.
Sql("create fulltext catalog AppNameCatalog;");
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;");
Wenn diese läuft alles in Ordnung geschaffen wird, bis sie diese SQL erreicht, dann wirft er die die SQL-Fehler 'FULLTEXT- KATALOG Anweisung CREATE kann nicht innerhalb einer Benutzertransaktion verwendet werden. '. Welches erwartet wird und wie geplant funktioniert.
Zum Glück hat Sql() eine Überladung, mit der Sie die sql außerhalb der Migration Transaktion ausführen können. Genial! Ich dachte.
Sql("create fulltext catalog AppNameCatalog;", true);
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;", true);
Aber niedrig, und siehe den Code zu modifizieren, dies zu tun führt zu einem neuen Timeout-Fehler 'Timeout abgelaufen ist (siehe oben). Das Zeitlimit ist vor dem Abschluss des Vorgangs abgelaufen oder der Server reagiert nicht. '
Ich habe versucht, sql auszuspucken und es manuell ausgeführt und es funktioniert gut. Ich habe auch die generierte SQL mit und ohne es außerhalb einer Transaktion ausgeführt und sie sind identisch, so muss es etwas in der Art sein, wie SQL ausgeführt wird.
Vielen Dank im Voraus für jede Hilfe!
Hey, danke für die Eingabe. Hat es dann als separate Migration funktioniert? –
Yip, ich habe es funktioniert als separate Migration. Die Tabellenerstellung erfolgt in der InitialCreate-Migration, und der Volltextkatalog und die Indizes werden in einer separaten Migration erstellt, die nach der InitialCreate-Migration ausgeführt werden soll. – jspaey