Я работаю над тестом интеграции. Поскольку мы используем NServiceBus Saga с ravendb как хранилище, для теста интеграции мне нужно удалить все документы в хранилище raven для каждого тестового примера. Поскольку это хранилище saga NServiceBus, тип документа в Raven Db не известен в тесте интеграции. В основном мне нужно прочитать все документы (любой тип) и удалить их. Я с нетерпением жду, чтобы написать запрос в сеансе ravendb, чтобы получить все документы из конкретной базы данных. Когда я проверил метод запроса Raven Db Query, он ожидает тип документа. В то время как мне нужно запросить все документы в базе данных без типа. FYI, так как это тест интеграции, ворон магазин не будет иметь много записей. Таким образом, производительность не является проблемой.Запросить все документы, если тип неизвестен
Вот запрос, который я пытаюсь выполнить.
"from doc in docs let DocId = doc[\"@metadata\"][\"@id\"] select new {DocId};"
Решение 1:
Я также пытался создать индекс для вышеупомянутого запроса и выполняется DeleteByIndex. Это фактически удаляет все документы в базе данных. Но он работает для определенных тестовых случаев и бросает исключение в другой тестовый пример, говорящий, что «Stale Index». Я также нашел решение, в котором код мог дождаться завершения индекса, чтобы избежать устаревшего исключения. Или установите allowstale в true, чтобы избежать этого исключения. Я думал, что вместо того, чтобы проходить через все индексирование, почему я не могу просто написать запрос, чтобы получить все документы и удалить их.
Решение 2: Я нашел другое решение, которое удаляет папку документа ravendb. Это не сработает для моей ситуации, потому что шина NServices будет генерировать исключение, если база данных будет удалена при запуске оконного процессора NServiceBus. Это нарушает наши тестовые примеры интеграции. Другая причина, по которой интеграционный тест будет работать на разных машинах, чем машина ravendb. Таким образом, тестовое окно интеграции может не иметь доступа к папке окна ravendb.
Это все причины, по которым я хочу написать запрос для извлечения всех документов из базы данных и их удаления.
Любая помощь приветствуется.
Как я сказал в вопросе, Ravendb используется в качестве NServiceBus Saga документа магазина и управляется NServicesBus. – Amzath
Но вы можете ввести пользовательский ISagaPersister, который использует сервер Raven в памяти. –