クラスの統合テストのために、マルチテナントravendbの一般的な削除関数を作成しようとしています-
public class RavenDeleteAll
{
private readonly IDocumentStore _store;
private readonly string _testDataBase;
public RavenDeleteAll(string testDataBase, IDocumentStore store)
{
_testDataBase = testDataBase;
_store = store;
}
public void Clear<T>(string indexName)
{
using (var session = _store.OpenSession(_testDataBase))
{
session.Advanced.DocumentStore.DatabaseCommands.DeleteIndex(indexName);
session.Advanced.DocumentStore.DatabaseCommands.PutIndex(indexName, new IndexDefinitionBuilder<T>
{
Map = documents => documents.Select(entity => new { })
});
var indexDefinition = session.Advanced.DocumentStore.DatabaseCommands.GetIndex(indexName);
session.Advanced.LuceneQuery<T>(indexName)
.WaitForNonStaleResultsAsOfNow()
.Take(0)
.ToList();
session.Advanced.DatabaseCommands.DeleteByIndex(indexName, new IndexQuery());
}
}
}
コードでは、健全性チェックのために putindex を呼び出した後にインデックスを読み戻そうとしていることに注意してください。しかし、インデックスを実行すると、/indexes/UTO が存在しないことを示す無効な操作の例外がスローされますか?
また、管理コンソールから、インデックスをはっきりと見ることができます -
私は何をしていないのですか?また、インデックスは実際のデータベース名ではなく、デフォルトのデータベースの下に作成されますか?