2013-07-02 6 views
3

RavenDB에서 프로그래밍 방식으로 인덱스를 만드는 방법은 무엇입니까?프로그래밍 방식으로 인덱스 만들기

나는 이것을 따라하려고 시도했다. .

이 내 인덱스 창조자이다 :

var store = new Raven.Client.Document.DocumentStore 
{ 
    Url = "http://localhost:8080" 
}; 
store.Initialize(); 

try 
{ 
    using (var session = store.OpenSession("MyDB")) 
    { 
     Raven.Client.Indexes.IndexCreation.CreateIndexes(
      typeof(MyIndex).Assembly, store); 
    } 
} 
finally 
{ 
    store.Dispose(); 
} 

이 인덱스는하지만보기 MyDB뿐만 시스템 데이터베이스에서 만든 : 여기

public class MyIndex : Raven.Client.Indexes.AbstractIndexCreationTask<MyEntity> 
{ 
    public MyIndex() 
    { 
     Map = col => col.Select(c => new 
     { 
      code = c.Code, 
      len = c.Code.Length, 
      sub = c.Code.Substring(0, 1) 
     }); 
    } 
} 

그리고 발신자입니다.

MyDB에서 색인을 만드는 방법은 무엇입니까? 인덱스를 올바르게 작성하는 방법이 맞습니까?

답변

5

이 시도 : 이 저장소 개체의 데이터베이스 이름을 지정 MED는 지적 문서 저장소에 연결할 때

var store = new Raven.Client.Document.DocumentStore 
{ 
    Url = "http://localhost:8080", 
    DefaultDatabase = "MyDB" 
}; 
4

, 당신은 기본 데이터베이스를 제공 할 수 있습니다. 이렇게하면 더 이상 데이터베이스 이름을 OpenSession 메소드로 전달하지 않습니다. 이것은 가장 쉬운 방법이며 단일 데이터베이스로 작업하는 경우 최상의 대답입니다 (이 질문에 대한 대답으로 신용을 부여해야 함).

그러나 여러 데이터베이스로 작업해야하므로 해당 기술을 사용할 수없는 경우이 도우미 메서드를 사용할 수 있습니다.

public static void CreateIndexes(Assembly assembly, IDocumentStore store, 
                string databaseName) 
{ 
    var catalog = new AssemblyCatalog(assembly); 
    var provider = new CompositionContainer(catalog); 
    var commands = store.DatabaseCommands.ForDatabase(databaseName); 
    IndexCreation.CreateIndexes(provider, commands, store.Conventions); 
} 

전화를 당신이 다른 방법을 부를 것이다, 그러나 지금 당신은 매개 변수로 데이터베이스 이름을 전달할 수 있습니다 같은 방법으로.

+0

레이븐 2375에서 공급자의 SourceProvider가 null이라는 오류가 나타납니다. 지금 조사 중입니다 ... 자세한 내용이 있으면 알려주십시오. – Steve

+0

var 공급자 = 새 CatalogExportProvider (카탈로그) { SourceProvider = new CatalogExportProvider (카탈로그) }; 이 내 문제를 해결하고 색인이 생성됩니다. – Steve

+0

@ 스티브 - 그걸 붙잡아서 고마워. 지난 번에 내가 어떻게 잘못되었는지 모르지만 지금은 고쳐졌습니다. 당신의 방식도 훌륭하지만, 내가 작성한 편집은 코드 작성이 약간 적고 Raven이 자체 CreateIndexes 메소드로 수행하는 작업입니다. –

관련 문제