2011-08-16 9 views
2

내가 RavenDB에 외부 소스에서 데이터를 가져올 때 RavenDB 1.0.0.426RavenDB은 슬래시 끝이

난 그냥 이상한 시나리오를 경험 사용할 때 ID에 정수를 추가 외부 소스가 사용할 ID로서 특정 문자열 앞에 접두어가 붙습니다. 그러나. '/'로 끝나는 ID로 문서를 저장하면 까마귀가 자동으로 ID 끝에 숫자를 추가하여 동일한 ID로 저장된 기존 문서를 덮어 쓰지 않습니다.

내가 오류의 원인이 간단한 시나리오를 다시 한

:

public class Foo 
{ 
    public string Id { get; set; } 
    public Foo(string id) 
    { 
     Id = id; 
    } 
} 

방법은 동일한 ID를 가진 문서를 저장 10 회, 그 후 문서의 수를 확인 :

는 유형 I 저장 :

public void RunTest(string id) 
{ 
    for (int i = 0; i < 10; i++) 
    { 
     using (var doc = new DocumentStore() { Url = "http://pc-009:8080/" }) 
     { 
      doc.Initialize(); 
      using (var session = doc.OpenSession()) 
      { 
       session.Store(new Foo(id)); 
       session.SaveChanges(); 
      } 
     } 
    } 

      // Wait for the data to be persisted 
      Thread.Sleep(2000); 

    using (var doc = new DocumentStore() { Url = "http://pc-009:8080/" }) 
    { 
     doc.Initialize(); 
     using (var session = doc.OpenSession()) 
     { 
      var foos = session.Query<Foo>(); 
      int fooCount = foos.Count(); 
      // ASSERT HERE THAT fooCount is 1 
     } 
    } 
} 

운전 방식을 실행 성공적으로 기존 덮어 문서 "ID1"와 D :

RunTest("id1"); // Works fine 

"ID1은 /"데이터베이스에서 10 개 문서 작성 끝과 방법을 실행 : 내가 아는

RunTest("id1/"); // Results in multiple documents to be created 

을 당신이하지 않으면 나만의 ID를 정의하면 까마귀가 즉시 doc-ids를 자동 생성하지만 위의 설명에 따라 설계된 동작입니까? /와 키 끝이, 그것은 정체성 생성 전략을 사용하는 ravendb 요청하면 미리

답변

5

스테판에서

감사합니다는, 이가 예상된다. 여기에 문서를 참조하십시오 : http://ravendb.net/documentation/docs-api-key-generation

당신이 /로 끝나는 키를 원하는 경우에, 다시 인코딩을

+0

감사를 키 URL입니다 수 있습니다. 나는이 문제에있어서 유일하게 예약 된 인물이라고 생각하니? –