太长了;如何使用 Entity Framework 5 编码迁移添加全文索引
我在使用实体框架迁移向数据库添加全文索引时遇到问题。它需要从一开始就存在,因此我尝试修改自动生成的 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 语句不能在用户事务内使用。'。这是预期的并且按设计工作。
值得庆幸的是,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);
但是,修改代码来执行此操作(见上文)会导致新的超时错误'超时已过。操作完成之前超时时间已过,或者服务器未响应。'
我试过吐出sql并手动运行它,效果很好。我还对在事务外运行和不运行生成的 sql 进行了比较,它们是相同的,因此它一定是 sql 执行方式中的某些内容。
预先感谢您的任何帮助!