Bir arka plan iş parçacığı tarafından, harici bir web hizmetinden nesne kimlikleri listesini düzenli olarak alan ve eksik varlıkları katıştırılmış bir RavenDb veritabanına eklemeye çalışan bir mutabakat sürecim var. aşağıdaki gibiRavenDb'den yazdıktan hemen sonra okunan tutarsız veriler döndürülüyor
foreach (var pageId in listOfPageIds)
{
if (_contentService.GetPageByPageId(pageId) == null)
{
_contentService.AddPage(pageId);
}
}
GetPageByPageId()
ve AddPage()
uygulanması şunlardır: listesinde çift kimlikleri, varsa
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;
}
ekler sorun bir kez bu işlemi gerçekleştiren döngü şudur ilk id ve tekrar bu kimlik için kontrol, sonuç boş olarak geri gelir. Yeni eklenen varlığı kaydedecek bir sonlandırma adımı eksik gibi. Seti daha sonra farklı bir iş parçacığından sorgularsam, bu kimliğe sahip öğe döndürülür. Sorunun ne olduğunu herkes görebilir mi? Bu Raven kabul nihai tutarlılık modelinin bir sonucudur
Hızlı yanıt için teşekkürler, bu gerçekten sorun oldu! – ambog36