2011-08-06 2 views
29

그래서 과일, 사과, 오렌지의 3 가지 개체가 있다고 가정 해 보겠습니다. 과일은 Apple과 Orange의 추상 기본 클래스입니다. session.Store (myApple)을 사용하면 Apples 컬렉션에 저장됩니다. myOrange는 Oranges 컬렉션에 있습니다. 말이된다.RavenDB에서 컬렉션 이름 지정

사과 또는 오렌지를 저장할 수있는 과일 수집을 원한다는 것을 Raven에게 알릴 수 있습니까? Mongodb는 컬렉션 이름을 명시 적으로 지정할 수 있기 때문에 이것을 허용합니다. RavenDB 컬렉션 문서는 말한다 : 그 필요하지 않지만

예상 사용 패턴이 컬렉션은 그룹에 유사한 구조를 가진 문서를 사용하는 것입니다. 데이터베이스 관점에서 컬렉션은 같은 엔터티 이름을 공유하는 문서 그룹 일뿐입니다.

나는 그것이 같은 것으로 기대 : session.Store < 과일> (myApple), 또는 session.Store ("과일", myApple)

어떤 아이디어? 감사.

+0

다음은 문제와 유사합니다. 나는 이것을 시도 할 것이다. 그러나 나는 지금 불가능하다. http://groups.google.com/group/ravendb/browse_thread/thread/eb86c2ffd29ed5e/11644a7eaddaf123?lnk=gst&q=Inheritance#11644a7eaddaf123 http://mikehadlow.blogspot.com/2010/10/ravendb-playing-with- 상속 - and.html –

답변

39

송곳, 당신은 사용하여 작업을 수행 할 수 있도록 할 수있는 긴 방법입니다

session.Store(apple); 
session.Advanced.GetMetadataFor(apple)[Constants.RavenEntityName] = "Fruits"; 

합니다. 훨씬 더 좋은 방법은이 논리가 전 세계적으로, 그것은 다음과 같은 형태 추가하는 것입니다 : 모든이를 처리 할

store.Conventions.FindTypeTagName = 
    type => type.IsSubclassOf(typeof(Fruit)) ? 
     DocumentConvention.DefaultTypeTagName(typeof(Fruit)) : 
     DocumentConvention.DefaultTypeTagName(type); 

.

+0

예, 저를 위해 일했습니다, 고마워요! – awl

+0

답변 해 주셔서 감사합니다. –

+0

.NET 코어의 경우 'type.GetTypeInfo(). IsSubclassOf (typeof (Fruit))'('System.Reflection') 또는'typeof (Fruit) .IsAssignableFrom (type)'([link] : //msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx)). 이 답변을 더 잘 이해하려면 'IsAssignableFrom' ([link] (https://stackoverflow.com/a/2742288/968003)) –