2011-05-09 4 views
1

아래 코드를 사용하여 문서가 컬렉션에 있는지 확인하려고합니다. 쿼리가 어떤 문서도 찾지 못했을 때마다 나는 StackOverflowException을 얻는다. 이걸 내가 뭘 잘못하고 있니?C# Mongodb 커서 수 얻기

MongoServer server = MongoServer.Create(connectionString); 
MongoDatabase db = server.GetDatabase(database); 
MongoCollection<Document> documents = db.GetCollection<Document>("Documents"); 
var query = Query.EQ("DocID", doc.DocID); 
var result = documents.FindOneAs<Document>(query); 

if (result != null) 
{ 
    doc.Id = result.Id; 
    doc.DocCreated = result.DocCreated; 
    doc.DocCreatedBy = result.DocCreatedBy; 
    doc.MergeFiles(result); 
    documents.Save(doc); 
} 
else 
{ 
    doc.Save(); 
} 

또한 공식 mongodb C# 드라이버를 사용하고 있습니다.

편집 : 다음은 스택 추적입니다. 그것은별로 말하지 않습니다.

System.dll에서 'System.StackOverflowException'형식의 처리되지 않은 예외가 발생했습니다. 현재 스레드가 스택 오버플로 상태에 있으므로 식을 계산할 수 없습니다.

편집 2 : 다음은 내 문서 클래스의 링크입니다. https://gist.github.com/68d38bec41ebc46f30eb

+0

스택 추적을 얻었습니까? –

+0

Twisternhra : 스택 추적이 아닙니다. 오류 메시지입니다. Visual Studio에서이 작업을 디버그 모드로 실행하는 경우 "클립 보드에 예외 세부 정보 복사"라는 예외 처리기가 있어야합니다. 거기에 복사 한 텍스트를 붙여 넣으십시오. –

+0

그게 내가 한 짓. Visual Studio에서 나에게 어떤 일이 발생했는지에 대한 정보를주지 못했습니다. 사실 문제가 무엇인지 알아 냈습니다. 우연히 잘못된 저장 메서드를 호출하고 그것은 끝없는 반복으로 나를 보냈습니다. 웬일인지 특정 지점에서 브레이크 포인트를 설정할 때만 루프를 밟았습니다. – MattAitchison

답변

0

기타 조건에 mongo 관련 코드가 포함되어 있지 않은 것 같습니다. doc.Save()는 DocumentData.Save를 호출하여이 (Document)를 인수로 전달합니다. 그 호출 체인의 어딘가에서 결국 Document.Save를 다시 호출한다고 추측 할 수 있습니다.