将新索引添加到代码

时间:2016-01-20 12:04:46

标签: ravendb

我添加了最简单的索引,如下所示:

public class MyDocType_ById : AbstractIndexCreationTask<MyDocType>
{
    public MyDocType_ById()
    {
        Map = myDocs => from mine in myDocs
            select new
            {
                Id = mine.Id
            };

        Index(x => x.Id, FieldIndexing.Analyzed);
    }
}

编译并点击我的网站后,我得到以下异常:

  

[IndexCompilationException:找不到文件'C:\ dev \ db \ ravendb \ CompiledIndexCache \ -1836739954.u6DpcVRxqMXarC7cwg26Jg%3d%3d.nodebug.dll'。]

我正在使用

在我的app-startup上创建索引
IndexCreation.CreateIndexes(typeof(MyDocType_ById).Assembly, IoC.Container.GetInstance<IDocumentStore>());

在文件夹中创建一个名为-1836739954.u6DpcVRxqMXarC7cwg26Jg%3d%3d.nodebug.dll.cs的文件,但不存在dll。

尝试了一些步骤:

  • 确保C:\dev\db\ravendb\CompiledIndexCache\
  • 上的文件夹权限正确
  • iisreset + restart ravendb(Windows服务)
  • 重命名索引
  • 在办公室大声说出[CURSE]缘故

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

彻底的谷歌搜索引导我找到这里找到的一个可能的解决方案(Ayende也建议检查文件夹权限,确保没有索引服务/防病毒/备份et.c.正在触摸文件夹):https://groups.google.com/forum/#!topic/ravendb/awh7eV00QNE

OP最终通过重启他的机器来解决这个问题。

这个也为我解决了(虽然我很好奇重启不同于重启所有服务,等等......)。

我尝试通过添加相同的文档类型+索引来重新创建错误,这次它立即正常工作。唯一剩下的就是希望这种情况永远不会再发生(特别是在例如生产发布期间......)。

更新:只有在从休眠状态唤醒系统(Windows 10)之后,我的任何开发机器上偶尔会出现这种情况,因此另一种解决方案可能是不对您的开发机器进行休眠......