TLDR; 如何使用Entity Framework 5代码迁移添加全文索引
我在使用Entity Framework迁移时遇到了问题,尝试为数据库添加全文索引。这需要从一开始就存在,因此我正在尝试修改自动生成的InitialCreate迁移以添加它。
由于没有通过DbMigrations API完成此操作的方法,因此我不得不在“Up”代码末尾运行联机SQL。
Sql("create fulltext catalog AppNameCatalog;");
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;");
当这段代码运行时,一切都很顺利,直到它遇到了这个 SQL,然后会抛出一个 SQL 错误 'CREATE FULLTEXT CATALOG statement cannot be used inside a user transaction.'。这是预期的,并且按设计工作。
幸运的是,Sql() 有一个重载,可以让你在迁移事务外运行 SQL。太棒了!我想。
Sql("create fulltext catalog AppNameCatalog;", true);
Sql("create fulltext index on Document (Data type column Extension) key index [PK_dbo.Document] on AppNameCatalog;", true);
但是修改代码以执行此操作(请参见上文)会导致一个新的超时错误'Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.'
我已经尝试将 SQL 语句输出并手动运行,它可以正常工作。我还比较了生成的 SQL 语句在事务内外运行的差异,发现它们是相同的,因此问题一定与执行 SQL 的方式有关。
提前感谢您的任何帮助!