2012-08-23 2 views
-1

다음 개체가 있습니다. 두 가지 특성을 가진 WordOccurrence : - 문자열 단어. - int 발생 나는 예외를 얻지 않고 다음을하고 싶다. (- : WordOccurrence w1 = 새로운 WordOccurrence() {Word = "Hey", Occurrence = 1} WordOccurrence w2 = new WordOccurrence() {Word = "Hey" , 발생 = 1};C# RavenDB 삭제

지금

내가 W1, 첫 번째를 저장하고 싶지만, W2 그를 삭제

session.store (W1)를, 것은 Session.delete (W2)를 -.> ...

는? 그것은 가능한 예외에 있습니다됩니다

답변

1

공동 포맷을 시도하십시오 당신의 질문에 답을하고, 당신이하려는 것을 다시 말하십시오. w2을 저장하면 w1과 동일한 개체를 참조해야하지만 Raven이 삭제를 처리하지 않는 ID 인 경우에도 마찬가지입니다. SaveChanges을 호출 한 직후에 에 저장 한 개체를 삭제하거나 (이유를 이해하지 못함) 더 많은 가능성이있는 시나리오 Load 나중에 어느 시점에서 Delete을 호출하십시오.

var w1Id = string.empty; 
using(session) 
{ 
    var w1 = new WordOccurrence { Word="Hey", Occurrence=1}; 
    session.store(w1); 
    session.SaveChanges(); 
    w1Id = w1.Id; 
    //if you aren't declaring the Id property for some reason... 
    w1Id = session.Advanced.GetDocumentId(w1); 
} 

//somewhere else in the code 
using(session) 
{ 
    var w1 = session.Load<WordOccurrence>(w1Id); 
    session.Delete(w1); 
    session.SaveChanges(); 
} 

결론은 당신이 뭔가를 삭제할 수 없습니다 당신도 SaveChanges를 호출하기 전에 그냥 Store에 세션을 말했다는 것이다. 사용자가 실행 취소 버튼을 클릭했기 때문에 Store 작업을 실행 취소하려는 경우 SaveChanges (세션에서 유일한 작업 인 경우)을 호출하거나 Session.Advanced.Evict(w1)을 사용하여 해당 세션에서 해당 객체를 퇴장 시키십시오.

문서의 ID로 말씀 속성을 기대하는 경우가 그 customizing the DocumentStore conventions

에 의해 발생할 수 있습니다