防止将重复文档插入 Lotus Notes 数据库

我在 iis 中托管了 ac# web api,它有一个 post 方法,可以将文档 ID 列表插入到 Lotus Notes 数据库中。可以多次调用 post 方法,我想防止插入重复的文档。


这是从帖子中调用的代码(在静态类中):


lock (thisLock)

{

   var id = "some unique id";

   doc = vw.GetDocumentByKey(id, false);

   if (doc == null)

   {

      NotesDocument docNew = db.CreateDocument();

      //some more processing

      docNew.Save(true, false, false);

   }

}

即使锁定到位,我也会遇到插入重复文档的情况。是因为请求可以在新进程上执行吗?防止它发生的最佳方法是什么?


长风秋雁
浏览 174回答 2
2回答

慕沐林林

您的问题是:getdocumentbykey 取决于最新的视图索引。在繁忙的服务器上,不能保证这是真的。您可以尝试调用 vw.Update,但不幸的是,这不会触发视图索引的更新,因此它可能没有任何影响(它只是更新 vw 对象以表示后端发生的变化,如果后端做了不更新,那么它什么都不做)。您可以db.Search('IdField ="' & id & '"', Nothing, 0)改用,因为搜索不依赖于要重建的索引。这会稍微慢一点,但应该更准确。
打开App,查看更多内容
随时随地看视频慕课网APP