2016-06-08 5 views
1

우리 프로젝트에는 프레임 워크와 엔티티를 구현하는 자체 코드 기반이 있습니다.기본 클래스의 모든 파생 클래스 색인 ravendb

프레임 워크에 사용자와 같은 특정 프레임 워크 유형의 모든 상속 결과를 반환하는 인덱스가 있어야합니다.

Raven이 이것을 지원하는 유일한 방법은 최상위 레벨에서 색인을 만들고 수동으로지도를 추가하지 않고도 Clr 유형을 덮어 쓰면 모든 객체를 동일한 모음에 저장하는 것입니다. 그러나 이는 파생 된 정보를 잃어 버리고 정보를 쿼리 할 수 ​​없다는 것을 의미합니다.

일부 샘플 :

class A { 
    public string Id {get; set; }, 
    public string Name {get; set; } 
} 
class B : A { } 
class C : A { } 
class D : C { } 

는 그럼 난의 라인을 따라 뭔가 조회 할 :

store.Query<IndexOfA>().Where(a => a.Name == "foo").As<A>().ToList(); 

을 여전히이 작업을 수행 할 수;

store.Query<IndexOfC>().As<C>().ToList() 

내 생각은 모두 저장하는 규칙을 추가했다 파생 및 메타 데이터에 대한 기본 클래스 RavenDB에서 문서를 저장,하지만 난 어떻게 가야하는 생각이없고, 주제에 대한 모든 문서를 찾을 수 없습니다 .

아이디어가 있으십니까?

답변

0

AddMapForAll<Base>으로 다중 맵 인덱스를 사용하는 인덱스를 만들 수 있습니다.이 인덱스는 파생 클래스마다 별도의 항목을 생성합니다. 그런 다음이 인덱스를 사용하여 다형성 쿼리를 수행 할 수 있습니다.

+0

답해 주셔서 감사합니다. 이것은 우리가 찾고 있던 것과 비슷하지만 여러 프로젝트가 있기 때문에 파생 클래스에 대한 모든 어셈블리를 실제로 검색하는 확장을 만들어야했습니다. 아마도 이것을 지원하는 오버로드 메소드를 Raven 소스에 추가 할 생각인가? – Chrotenise

+0

답변은 공식 문서에서 [도움말 링크] (https://ravendb.net/docs/article-page/3.5/Csharp/indexes/multi-map-indexes)가 어떻게 도움이되는지 설명되어 있지 않습니다. –

관련 문제