【发布时间】:2016-03-20 01:47:14
【问题描述】:
我是 RavenDb 的绝对初学者,但在使用 SQL 的 EF 和存储库模式方面非常有经验。终于开始尝试了,所以我使用 RavenDB.Embedded 创建了一个简单的控制台应用程序,目的是替换另一个应用程序上老化的 SQLLite EF 实现。
无论如何,我正在尝试将 1000 多条记录写入存储,然后简单地通过流读出。以下是部分示例代码:
var store = new EmbeddableDocumentStore
{
DataDirectory = "data"
};
store.Initialize();
using (IDocumentSession session = store.OpenSession())
{
for (var t = 1; t < 1000; t++)
{
var subtest = new Test
{
Id = new Guid(),
SubTest = new SubTest
{
Name = "NewTest",
Id = new Guid()
}
};
session.Store(subtest);
}
session.SaveChanges();
}
store
.DatabaseCommands
.PutIndex("SubTest/All",
new IndexDefinitionBuilder<SubTest>()
{
Map = tests => tests
.Select(test => new
{
SubTest = test.SubTest,
Id = test.Id
})
});
using (IDocumentSession session = store.OpenSession())
{
var query = session.Query<Test>("SubTest/All");
var listt = query.ToList();
using (var enumerator = session.Advanced.Stream(query))
{
while (enumerator.MoveNext())
{
var t = enumerator.Current.Document;
System.Console.WriteLine(t.Id);
}
};
}
System.Console.ReadLine();
我意识到这是非常初级的,我并不想找人来纠正我的代码。只是希望有人可以帮助我理解索引事物应该如何与流一起工作,并可能解释为什么枚举器没有结果。如果我使用 .Load 而不是 .Query 我会得到结果(其中 128 个),所以我很确定其余的工作正常。
我尝试了上面的 PutIndex,但我也尝试了 AbstractIndexCreationTask,但结果同样令人困惑。我真的无法在网上找到很多关于这个的信息,很奇怪,这真的很罕见吗?
【问题讨论】:
标签: ravendb