问题描述
我最初使用单独的数据库进行开发 - 一个用于数据,另一个用于配置,但我的查询现在需要“连接”两个数据库中的数据。作为迁移过程的一部分,如何使用 C# API 合并这 2 个数据库?
解决方法
这可以使用 Raven.Client.Documents.Smuggler.DataSmuggler
类来完成:
using System.Threading.Tasks;
using Raven.Client.Documents;
using Raven.Client.ServerWide.Operations;
public class RavenDBMerger
{
readonly IDocumentStore _store;
public RavenDBMerger(IDocumentStore store)
{
_store = store;
}
public async Task MergeDatabases()
{
string sourceDbName = "source-database";
var sourceDb = _store.Maintenance.Server.Send(new GetDatabaseRecordOperation(sourceDbName));
if (sourceDb != null)
{
var smugglerFrom = _store.Smuggler.ForDatabase(sourceDbName);
var smugglerTo = _store.Smuggler.ForDatabase("target-database");
await smugglerFrom.ExportAsync(new Raven.Client.Documents.Smuggler.DatabaseSmugglerExportOptions(),smugglerTo);
_store.Maintenance.Server.Send(new DeleteDatabasesOperation(sourceDbName,hardDelete: true));
}
}
}