2012-02-07 89 views
7

我正在使用RavenDb嵌入式。作为我的集成测试的一部分,我想检查对象是否持久。当我在一个对象上保存更改时,然后检索它,除非我处理我的连接,否则无法找到它。RavenDB如何刷新?

这并没有为我工作,因为没有文件返回

using (var session = _dataDocumentStore.Instance.OpenSession()) 
{ 
     session.Store(file); 
     session.SaveChanges(); 
} 

....

using (var session = _dataDocumentStore.Instance.OpenSession()) 
{ 
      return session.Query<File>().ToList(); 
} 

我创建了部署并重新创建一个EmbeddableDocumentStore其工作的Flush方法,但作为这是感觉根本的东西,我可能会以错误的方式去做事:

public static IDocumentStore Initialize() 
     { 
      instance = new EmbeddableDocumentStore 
      { 
       DataDirectory = "App_Data/Database", 
       UseEmbeddedHttpServer = true, 


      }; 

      instance.Initialize(); 
      return instance; 
     } 

     public void Flush() 
     { 
      instance.Dispose(); 
      Initialize(); 

     } 

H你坚持RavenDB,然后检查它已被持续?在这个任何意见将是巨大的

+0

是否有您所呼叫instance.Initialize()的理由的爱;当您进入IDocumentStore Initialize()方法时,您正在创建新实例 – MethodMan 2012-02-07 17:56:06

+0

数据库本身显示什么?检查Raven Studio以确保您的保存工作正常。你的文件在那里吗? – 2012-02-07 18:47:30

回答

15

基本上,EmbeddableDocumentStore需要更长的时间来保存和指数新数据,不是保存和查询。

所以,当你的测试说: -

  1. 存储和调用SaveChanges。
  2. 负载。
  3. 这篇负荷?

加载完成waaay比索引有时间快完成了。

因此,像丹尼尔·兰说,U需要等待陈旧结果。

但..你必须为你做的要检查,在你的代码-every-查询。所以..让作弊(合法):)

告诉你的文档存储到一直等陈旧的结果,如果某些查询的商店。

怎么样?

// Initialise the Store. 
var documentStore = new EmbeddableDocumentStore 
        { 
         RunInMemory = true 
        }; 
documentStore.Initialize(); 

// Force query's to wait for index's to catch up. Unit Testing only :P 
documentStore.RegisterListener(new NoStaleQueriesListener()); 

.... 


#region Nested type: NoStaleQueriesListener 

public class NoStaleQueriesListener : IDocumentQueryListener 
{ 
    #region Implementation of IDocumentQueryListener 

    public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization) 
    { 
     queryCustomization.WaitForNonStaleResults(); 
    } 

    #endregion 
} 

#endregion 

现在看到这个在行动中,检查出RavenOverflow @ github。而在该解决方案的Tests project有所有你可能需要:)

enter image description here

+0

++。对于版本3:'documentStore.Listeners.RegisterListener' – 2015-09-21 20:30:24