我有一个使用嵌入式RavenDB的应用程序 . 我希望能够将特定文档集(包含所有嵌套/引用文档的文档)导入/导出到文件 .
我理想的功能就像:
var session = store.OpenSession();
MyDocument d1 = session.Load<MyDocument>(someId);
ImportExport.Export(store, d1, "file.xyz");
然后使用不同的IDocumentStore:
ImportExport.Import(store, "file.xyz");
var session = store.OpenSession();
MyDocument d2 = session.Load<MyDocument>(someId);
当然d1以任何方式等于d2 .
AFAIK Smuggler实用程序一次导出所有文档 .
我唯一的另一个想法是使用Json.NET来序列化MyDocument对象,将其保存到文件,然后反序列化(并存储它) . 我觉得这是一种方法,但是当MyDocument里面有很多其他文件的时候它会起作用吗?
2 回答
我最终使用"Raven.Smuggler.exe"程序使用"large" ravendump文件完成工作 . 但是,我不清楚这个导入过程[ drops and replaces from scratch ]或[ merges ]数据 - 我会执行数据库丢弃并在执行下面的导入过程之前重新创建,以保证数据的完整性 .
下载匹配的RavenDB版本的副本 .
简单地提取它(例如:C:\ RavenDB-Build-2956)
调用走私者 .
命令(根据需要设置/替换变量占位符)
示例变量
$ instance = http://localhost/ravendb_iis_web_app/或者http://localhost:8080/
$ dump = C:\ dump.ravendump
$ user =用户
$ plainpassword =密码
$ dbname = MyDatabase
你有Smuggler API来处理这个问题 . 看到:
出口:https://github.com/ravendb/ravendb/blob/d54bfba11995e915cf94f35ef3887fcb7d747033/Raven.Database/Smuggler/SmugglerDatabaseApi.cs#L163
进口:https://github.com/ravendb/ravendb/blob/d54bfba11995e915cf94f35ef3887fcb7d747033/Raven.Database/Smuggler/SmugglerDatabaseApi.cs#L90