8
我有一個調整過程,後臺線程定期從外部Web服務檢索對象ID列表並嘗試將缺失的實體添加到嵌入的RavenDb數據庫。執行此過程中的循環是:在寫入數據後立即從RavenDb中讀取返回不一致的數據
foreach (var pageId in listOfPageIds)
{
if (_contentService.GetPageByPageId(pageId) == null)
{
_contentService.AddPage(pageId);
}
}
的GetPageByPageId()
和AddPage()
的執行情況如下:
public Page GetPageByPageId(string pageId)
{
using (var session = DocumentStore.OpenSession())
{
return session.Query<Page>().FirstOrDefault(page => page.PageId == pageId);
}
}
public bool AddPage(string pageId)
{
var page = GetPageByPageId(pageId);
if (page != null)
{
return false;
}
using (var session = DocumentStore.OpenSession())
{
var newPage = new Page() {PageId = pageId};
session.Store(newPage);
session.SaveChanges();
}
return true;
}
的問題是,如果在列表中有重複的ID,一旦添加第一個id並再次檢查該id,結果返回爲空。這就好像完成步驟缺失,將註冊新添加的實體。如果稍後從不同線程查詢集合,則返回具有該給定ID的實體。任何人都可以看到這裏的問題是什麼?
謝謝,
感謝您的快速反應,這確實是問題! – ambog36