我用 C# 构建了一个应用程序,它将文档从源 NSF 复制到目标 NSF。目标 NSF 是一个空壳,保留了基于源 NSF 的所有设计元素。我使用的是 Lotus Notes 8.5.3,但没有连接到 Domino 服务器。
我使用此应用程序将源 NSF 拆分为更小的块。目标是创建可以由我们的自动化(电子发现)系统有效处理的目标 NSF。我需要确保保留尽可能多的元数据。
我现有的代码满足了这些目标,除了 (1) 我丢失了文件夹信息。复制文档后,所有文件夹都是空的。(2) 所有文档都标记为已读,即使它们在源中未读。
代码 C#
//Establish session
NotesSession ns = new Domino.NotesSessionClass();
ns.Initialize("");
//Open source NSF
NotesDatabase nd = ns.GetDatabase("", "test.nsf", false);
//Open destination NSF.
//Assume that all design elements of nd2 are identical to those of nd
NotesDatabase nd2 = ns.GetDatabase("", "test2.nsf", false);
//Create view that returns all documents.
NotesView nView2 = nd.GetView("$All");
nd.CreateView("All-DR", "SELECT @ALL", nView2, false);
NotesView nView = NotesConnectionDatabase.GetView("All-DR");
//Loop through entries in the new view
NotesViewEntry nvec = nView.AllEntries;
nve = nvec.GetFirstEntry();
for (int j = 1; j <= intEntryCount; j++)
{
if (j == 1)
{
nve = nvec.GetFirstEntry();
}
else
{
nve = nvec.GetNextEntry(nve);
}
//Copy document to second database.
NotesDocument ndoc = nd.GetDocumentByUNID(nve.UniversalID);
ndoc.CopyToDatabase(nd2);
}
//End loop.
//All documents are copied.
结果是我最终得到了一个目标 NSF,它复制了所有文档。假设所有文件夹也都在那里。但是,文件夹中没有任何文档。每个文档都标记为已读。
如何解决文件夹和未读问题?